说我有一个用户集合,并且想对那些用户的用户名实现自动完成功能。我看了一下mongodb文档,$ regex似乎是做到这一点的一种方法。有没有更好的办法?我的意思是更好的表现/更好的练习。
最佳答案
正如@Thilo所建议的那样,您可以使用一些想法,包括前缀。
最重要的是有一个非常快速的请求(因为您希望自动完成感觉很短暂)。因此,您必须使用可以正确使用索引的查询。
使用regexp:使用/^prefix/
(重要的是^指定行的开始,这是强制使用查询的索引)。
范围查询也很好:{ $gt : 'jhc', $lt: 'jhd' } }
更复杂,但速度更快:您可以使用以下条目在mongo中存储前缀树(aka尝试):
{usrPrefix : "anna", compl : ["annaconda", "annabelle", "annather"]}
{usrPrefix : "ann", compl : ["anne", "annaconda", "annabelle", "annather"]}
最后一个解决方案非常快(如果索引当然在compl上),但空间效率根本不高。您知道您也可以选择权衡。