假设我有一组用户并希望对这些用户的用户名实现自动填充。我看了一下mongodb文档,$ regex似乎是这样做的一种方法。有没有更好的办法?更好的意思是更高效/更好的实践。在MongoDB上实现自动完成
9
A
回答
9
正如@Thilo建议的那样,您可以使用几个想法,包括前缀。
最重要的是要有非常快速的请求(因为你想自动完成到感觉 instaneous)。所以你必须使用正确使用索引的查询。
使用正则表达式:使用/^prefix/
(重要的是^指定使查询使用索引必需的行的开头)。
范围查询是太好:{ $gt : 'jhc', $lt: 'jhd' } }
更复杂,但速度更快:你可以存储在蒙戈与像输入前缀树(又名尝试):
{usrPrefix : "anna", compl : ["annaconda", "annabelle", "annather"]}
{usrPrefix : "ann", compl : ["anne", "annaconda", "annabelle", "annather"]}
这最后的解决方案是非常快(当然,如果是compl的索引),但根本没有空间效率。你知道你选择的权衡。
2
5
我们确实使用正则表达式它和它的快,只要你有一个索引,并使用/ ^值/
要知道,你不能与索引使用不区分大小写的选项,所以你可能要将字符串的小写字母存储为文档中的另一个字段,并将其用于自动填充。
我已经完成了300万个文档的测试,它仍然是瞬间显示的。
相关问题
- 1. jQuery自动完成实现
- 2. MongoDB搜索 - 自动完成
- 3. devbridge自动完成查询AJAX实现
- 4. 实现Json自动完成类别
- 5. 自动完成服务器端实现
- 6. jQuery:在隐藏Div上实现UI自动完成
- 7. 实现自动建议功能(不自动完成)
- 8. 自动完成实施
- 9. .net中的自动完成与mongodb
- 10. 如何使jqueryui自动完成实际自动完成?
- 11. 如何在Rails中实现多选自动完成文本框?
- 12. 如何实现自动完成文本框在MVC
- 13. 如何在ASP.NET MVC中实现自动完成?
- 14. 在Kendo UI自动完成中实现“精确”过滤选项
- 15. 如何在Android中实现自动完成单词提示?
- 16. 如何在MVC应用程序中实现自动完成?
- 17. 如何在多行<textarea>中实现自动完成?
- 18. 在我的网站中实现自动完成
- 19. 如何在html中实现自动完成?
- 20. 如何在iphone中使用线程实现自动完成textfield
- 21. 在CKeditor中实现JQuery UI自动完成功能
- 22. 如何在cakephp中实现搜索栏自动完成
- 23. 在iPhone上实现地址簿自动完成的最佳方式?
- 24. 自动完成在WPF上工作吗?
- 25. 在一个页面上的多个jQuery自动完成实例
- 26. jQuery在同一页上自动完成两个实例
- 27. 如何实现自动完成使用jquery marcopolo
- 28. 如何使用ajax实现自动完成插件?
- 29. jQuery UI自动完成 - 如何实现进度指示器?
- 30. 使用jtextfield和jpopupmenu实现自动完成
优秀的答案。虽然没有完成尝试。就我个人而言,我从来没有在Mongo中使用Regexes的“瞬间”感觉。这应该做的诀窍,使其更快! – Vivek
事实上,mongo中的正则表达式并没有很好地实现。然而,当你想要流畅的东西时,你不会想要在实时查询数据库,延迟太高。实现自动完成的正确方法是异步加载一些通常的完成,并随着时间(和用户输入)的完成而完成。 – kamaradclimber