本文介绍了多总和/在MongoDB的(和性别和总的结果)算的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有这个文件:
{gender:"male", ...},
{gender:"male", ...},
{gender:"female", ...},
{gender:"female", ...},
{gender:"female", ...},
所以,我需要像retrive
So, i need retrive like
{
total:5,
male:2,
female:3
}
我的实际查询(没有工作):
my actual query(no work):
db.collection.aggregate([
{
$match:{...}
},
{
$group:{
_id:"$_id",
gender:{
$push:"$gender"
},
total:{
$sum:1
}
}
},
{
$unwind:"$gender"
},
{
$group:{
_id:"$gender",
name:{
$addToSet:"$all"
},
"count":{
$sum:1
}
}
}
])
我怎么可以retrive性别和总的柜台?
谢谢
how i can retrive counter of gender and total?thanks
推荐答案
类似的东西会做的伎俩:
Something like that will do the trick:
db.collection.aggregate([
{$project: {
male: {$cond: [{$eq: ["$gender", "male"]}, 1, 0]},
female: {$cond: [{$eq: ["$gender", "female"]}, 1, 0]},
}},
{$group: { _id: null, male: {$sum: "$male"},
female: {$sum: "$female"},
total: {$sum: 1},
}},
])
生产给予你的例子:
Producing given your example:
{ "_id" : null, "male" : 2, "female" : 3, "total" : 5 }
的核心思想是利用href=\"http://docs.mongodb.org/manual/reference/operator/aggregation/cond/\" rel=\"nofollow\">条件前pression 映射性别为0或1。在此之后,你只需要在每个领域的简单相加。
The key idea is to use a conditional expression to map the gender to 0 or 1. After that, all you need is a simple sum over each field.
这篇关于多总和/在MongoDB的(和性别和总的结果)算的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!