HAR*_*118 2 javascript mongoose mongodb mongodb-query aggregation-framework
集合中的项目包含一个字符串数组。我想查找数组中最匹配元素的项目并对其进行排序。
考虑一个集合:
[
{
"item_name":"Item_1",
"tags":["A","B","C","D","E"]
},
{
"item_name":"Item_2",
"tags":["A","B","D","E","G"]
},
{
"item_name":"Item_3",
"tags":["B","C","E","H"]
}
]
Run Code Online (Sandbox Code Playgroud)
我想基于像 ["B","D","G","F"] 这样的数组对集合进行排序,它将返回
[
{
"item_name":"Item_2",
"tags":["A","B","D","E","G"]
},
{
"item_name":"Item_1",
"tags":["A","B","C","D","E"]
},
{
"item_name":"Item_3",
"tags":["B","C","E","H"]
}
]
Run Code Online (Sandbox Code Playgroud)
预期的顺序将是 Item_2、Item_1,然后是 Item_3,因为,
如果不在 mongodb 中,JavaScript 方法也将受到赞赏
如果 中的值是唯一的,则可以使用和 来使用 和 查询数组tags的交集大小tags$size$setIntersection
db.collection.aggregate([
{
$set: {
matchedCount: {
$size: {
$setIntersection: ["$tags", ["B","D","G","F"]]
}
}
}
},
{
$sort: {
matchedCount: -1
}
}
])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
557 次 |
| 最近记录: |