mongo db如何对这样的数据进行分组?

时间:2018-04-10 06:29:37

标签: mongodb

现在我得到这个表(它不能超过两种{A,B,C}同时出现在同一个数据中。):

{_id:1,A:a}
{_id:2,B:b}
{_id:3,C:a}
{_id:4,A:a}
{_id:5,A:b}
{_id:6,A:c}
{_id:7,C:a}

如何获得此结果?

a:4
b:2
c:1

1 个答案:

答案 0 :(得分:0)

你可以使用mongodb聚合框架获得这个结果,

首先,您需要在单个字段中添加所有值,并在该字段上执行 $group

db.collection.aggregate([{
    "$project": {
        "v": ["$A", "$B", "$C"]
    }
}, {
    "$unwind": "$v"
}, {
    "$match": {
        "v": {
            "$ne": null
        }
    }
}, {
    "$group": {
        "_id": "$v",
        "count": {
            "$sum": 1
        }
    }
}])

结果:

[
  {
    "_id": "c",
    "count": 1
  },
  {
    "_id": "b",
    "count": 2
  },
  {
    "_id": "a",
    "count": 4
  }
]

你可以在这里试试:mongoplayground.net/p/rGHUPWsw2ee