所以我有这个系统,用户可以在其中输入标签,但是我想添加建议/自动完成功能,并使用数据库中所有先前标签中的动态数据。
数据如下:
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"
]
答案 0 :(得分:2)
我认为无法通过直接查询来完成。以下聚合可以做到
db.collection.aggregate([{
$unwind: '$tags'
}, {
$match: {
'tags': { $regex: 'man' }
}
}, {
$group: {
_id: null,
tags: { '$addToSet': '$tags' }
}
}]);
希望这会有所帮助!