【问题标题】:Tag autocomplete in MongoDBMongoDB中的标签自动完成
【发布时间】:2019-02-01 01:58:31
【问题描述】:

我有一个包含 tags 数组的文档集合,其中包含 0+ 个字符串。

我想提供一个按标签 UI 字段自动完成有效标签的搜索。这将通过收集所有这些标签来完成,这本质上是标签字段的索引,并在字段中键入每个字符时执行,即{tags:{$regex:/^ro/}}。在他们键入时,会出现“rome”、“role”等有效标签。

一旦在 UI 中指定了一些标签,用户就会执行包含标签在内的实际搜索,执行常规的find 表达式。 我不想对标签字段进行文本搜索,所以请不要这样做。

换句话说,对于标签自动完成,我不需要对已标记文档的引用,我只需要与正则表达式匹配的标签列表。

我是否需要维护自己的标签集合,或者我可以为此使用tags 索引吗?

【问题讨论】:

    标签: mongodb autocomplete


    【解决方案1】:

    我找到了一个解决方案:

    db.test.aggregate([
      { "$unwind": {path:"$tags"}},
      { "$match": {tags:{$regex:/^ro/}} },
      { "$group": {"_id":null, "tags":{"$addToSet":"$tags"}}}
    ])
    

    它确实给了我需要的结果,但我不确定是否有更好的查询形式。性能似乎并不比不按我想要的方式压缩结果的类似查询差。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-15
      • 2017-04-17
      • 2019-09-08
      • 1970-01-01
      相关资源
      最近更新 更多