在这里我有一系列重复的项目
[
'gg',
'bb',
'dd',
'cc',
'll',
'aa',
'cc',
'gg',
'bb',
'dd',
'cc',
'bb',
'dd',
'll',
'aa',
]
我愿意返回的就是这样
{
'gg': 2,
'bb': 3,
'dd': 3,
'cc': 2,
'll': 2,
'aa': 2,
}
可以通过MongoDB聚集来完成吗???感谢任何帮助
使用$ utind和$ group作为聚合pipiline的阶段:
查询:
db.collection.aggregate([
{
$unwind: "$items"
},
{
$group: {
_id: "$items",
count: {
$sum: 1
}
}
}
])
结果:
{
"_id": "ll",
"count": 2
},
{
"_id": "gg",
"count": 2
},
{
"_id": "bb",
"count": 3
},
{
"_id": "cc",
"count": 3
},
{
"_id": "aa",
"count": 2
},
{
"_id": "dd",
"count": 3
}
这也很好...
db.users.aggregate([
{
$group: {
_id: "$email",
count: { $sum: 1 }
}
},
{
$match: {
count: { $gt: 1 }
}
}
])
输出:
{ "_id" : "a@gmail.com", "count" : 2 }
{ "_id" : "b@gmail.com", "count" : 2 }
{ "_id" : "c@gmaiL.com", "count" : 8 }
{ "_id" : "d@gmail.com", "count" : 2 }
{ "_id" : "e@gmail.com", "count" : 2 }
{ "_id" : "f@gmail.com", "count" : 2 }