例如,我有一个这样的集合:
{"_id": 1, "type": 'A', "data": "asdff"},
{"_id": 2, "type": 'B', "data": "fsdfs"},
{"_id": 3, "type": 'A', "data": "aesdf"},
{"_id": 4, "type": 'C', "data": "sdsdd"},
我可以获得A类的计数:
db.colA.find({type: 'A'}).count()
如何获得类型数组,例如A,B,C&#39>
db.colA.find({type: {$in: ['A', 'B', 'C']}}).countByType() ??
我应该像db.colA.find({type: type}).count()
那样进行循环吗?
答案 0 :(得分:1)
为此,您需要使用聚合框架。你需要{"键入"并使用$group
累加器运算符返回" count"对于每个"类型"。
db.colA.aggregate(
[
{ "$match": { "type": { "$in": [ "A", "B", "C" ] } },
{ "$group": {
"_id": "$type",
"count": { "$sum": 1 }
}}
]
)
当然,您可以随时获得" A"," B"," C"使用$sum
方法:
db.colA.count( { "type": { "$in": [ "A", "B", "C" ] } } )
答案 1 :(得分:1)
这适用于我:
db.getCollection('Mytest').aggregate([{
$group:
{_id: {"type":"$type"},"count": { $sum: 1 }}}])
输出:
{
"_id" : {
"type" : "C"
},
"count" : 1
}
{
"_id" : {
"type" : "B"
},
"count" : 1
}
{
"_id" : {
"type" : "A"
},
"count" : 2
}