【发布时间】:2020-11-02 17:36:12
【问题描述】:
集合中的一个项目包含一个字符串数组。我想查找数组中匹配元素最多的项目并对其进行排序。
考虑一个集合:
[
{
"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"]
}
]
我想根据 ["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"]
}
]
预期的顺序是 Item_2,Item_1,然后是 Item_3,
- Item_2 匹配 3 个项目(“B”、“D”和“G”)
- 然后 Item_1 有 2 个匹配项(“B”和“D”)
- 最后是 Item_3 与 1 个匹配项 ("B")
如果不在 mongodb 中,JavaScript 方法也会受到赞赏
【问题讨论】:
标签: javascript mongodb mongoose mongodb-query aggregation-framework