使用两个可能字段中的值进行分组

Art*_*ton 1 mongodb mongodb-query aggregation-framework

假设我有以下格式的匹配集合

     {user1: "a", user2: "b"},
        {user1: "a", user2: "c"},
        {user1: "b", user2: "d"},
        {user1: "b", user2: "c"},
        {user1: "b", user2: "e"},
        {user1: "c", user2: "f"}
Run Code Online (Sandbox Code Playgroud)

我想知道哪个用户具有最大的外观(在user1或user2中).结果应采用此格式,按出现次数排序.

{"user": "b", count:4},
            {"user": "c", count:3},
            {"user": "a", count:2},
            {"user": "d", count:1},
            {"user": "f", count:1},
            {"user": "e", count:1}
Run Code Online (Sandbox Code Playgroud)

有没有办法可以分组两个字段的值?

match.aggregate({$ group:{_ id:{$或:["user1","user2]}},计数:{$ sum:1}})

Ser*_*kiy 7

db.match.aggregate([
   {$project: { user: [ "$user1", "$user2" ]}},
   {$unwind: "$user"},
   {$group: {_id: "$user", count: {$sum:1}}}
])
Run Code Online (Sandbox Code Playgroud)

第一阶段将每个文档投影到用户阵列中

    {user: ["a", "b"]},
    {user: ["a", "c"]},
    {user: ["b", "d"]},
    ...
Run Code Online (Sandbox Code Playgroud)

接下来我们展开数组

    {user:"a"},
    {user:"b"},
    {user:"a"},
    {user:"c"},
    {user:"b"},
    ...
Run Code Online (Sandbox Code Playgroud)

并在最后进行简单的分组