MongoDB-查找并返回每个文档中数组的所有项目

时间:2018-12-03 11:32:33

标签: node.js mongodb mongodb-query

所以我有这个系统,用户可以在其中输入标签,但是我想添加建议/自动完成功能,并使用数据库中所有先前标签中的动态数据。

数据如下:

    collection = [
      {
        title: "Avengers",
        tags:["si-fi", "powers", "super-heroes", "iron-man"],
        ...
      },
      {
        title: "Lego Movie"
        tags:["spider-man", "bottle", "man of steel"],
        ...
      }
      ...
    ]

所以我想检索所有与搜索字符串匹配的标签的数组。

例如,如果我使用'man'搜索,我希望返回的数据为:

[
  "iron-man",
  "spider-man",
  "man of steel"
]

1 个答案:

答案 0 :(得分:2)

我认为无法通过直接查询来完成。以下聚合可以做到

    db.collection.aggregate([{
        $unwind: '$tags'
    }, {
        $match: {
            'tags': { $regex: 'man' }
        }
    }, {
        $group: {
            _id: null,
            tags: { '$addToSet': '$tags' }
        }
    }]);

希望这会有所帮助!