繁体   English   中英

MongoDB中的标签自动完成

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM