小编HAR*_*118的帖子

Mongodb 聚合以对数组中最常见的项目进行排序?

集合中的项目包含一个字符串数组。我想查找数组中最匹配元素的项目并对其进行排序。

考虑一个集合:

[
    {
        "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,因为,

  • Item_2 匹配 3 个项目(“B”、“D”和“G”)
  • 然后 Item_1 有 2 个匹配项(“B”和“D”)
  • 最后 Item_3 有 1 场比赛(“B”)

如果不在 mongodb 中,JavaScript 方法也将受到赞赏

javascript mongoose mongodb mongodb-query aggregation-framework

2
推荐指数
1
解决办法
557
查看次数