[英]Tag autocomplete in MongoDB
我有一个带有tags
数组的文档集合,其中包含0+个字符串。
我想提供通过标签UI字段自动完成有效标签的搜索。 这将通过收集所有这些标签的集合(实质上是标签字段的索引)来完成,即在字段中键入每个字符时执行{tags:{$regex:/^ro/}}
。 当它们键入时,将显示有效的标签,例如“ rome”,“ role”等。
在UI中指定了一些标签后,用户将执行实际搜索,其中包括这些标签以及其他内容,并执行常规的find
表达式。 我不希望在标签字段中进行文本搜索,所以请不要这样做。
换句话说,对于标记自动完成,我不需要引用标记的文档,只需要一个与正则表达式匹配的标记列表即可。
我是否需要维护自己的标签集合,或者可以为此使用tags
索引?
我找到了一个解决方案:
db.test.aggregate([
{ "$unwind": {path:"$tags"}},
{ "$match": {tags:{$regex:/^ro/}} },
{ "$group": {"_id":null, "tags":{"$addToSet":"$tags"}}}
])
它确实提供了我需要的结果,尽管我不确定是否有更好的查询形式。 性能似乎并不比不按我想要的方式压缩结果的类似查询差。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.