gpt4 book ai didi

mongodb - mongodb上的多和/计数(总和性别并总计所有结果)

转载 作者:行者123 更新时间:2023-12-05 01:02:38 24 4
gpt4 key购买 nike

我有这个文件:

{gender:"male", ...},
{gender:"male", ...},
{gender:"female", ...},
{gender:"female", ...},
{gender:"female", ...},

所以,我需要像这样检索

{
total:5,
male:2,
female:3
}

我的实际查询(没有工作):

db.collection.aggregate([
{
$match:{...}
},
{
$group:{
_id:"$_id",
gender:{
$push:"$gender"
},
total:{
$sum:1
}
}
},
{
$unwind:"$gender"
},
{
$group:{
_id:"$gender",
name:{
$addToSet:"$all"
},
"count":{
$sum:1
}
}
}
])

我如何检索性别和总数的计数器?谢谢

最佳答案

这样的事情就可以解决问题:

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},
}},
])

根据您的示例进行生产:

{ "_id" : null, "male" : 2, "female" : 3, "total" : 5 }

关键思想是使用 conditional expression将性别映射为 0 或 1。之后,您只需要对每个字段进行简单的求和即可。

关于mongodb - mongodb上的多和/计数(总和性别并总计所有结果),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31484316/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com