Mongodb 需要Mongo查询来生成具有聚合的特定结果集
我是mongodb新手,我有一个要求,希望知道如何使用Mongo聚合运算符生成自定义结果集。任何帮助都将不胜感激 需要按“公司”和“状态”对集合进行分组,并需要生成下面给出的结果集 收藏Mongodb 需要Mongo查询来生成具有聚合的特定结果集,mongodb,aggregation-framework,aggregate-functions,Mongodb,Aggregation Framework,Aggregate Functions,我是mongodb新手,我有一个要求,希望知道如何使用Mongo聚合运算符生成自定义结果集。任何帮助都将不胜感激 需要按“公司”和“状态”对集合进行分组,并需要生成下面给出的结果集 收藏 [ { "company": "google", "status": "active", "offer": { "job": "develop
[
{
"company": "google",
"status": "active",
"offer": {
"job": "developer",
"salary": 10000.00
},
},
{
"company": "google",
"status": "active",
"offer": {
"job": "designer",
"salary": 500000.00
},
},
{
"company": "amazon",
"status": "inactive",
"offer": {
"job": "designer",
"salary": 500000.00
},
}
]
预期结果集
[
{
"company" : "google",
"report" : [{
"status" : "active",
"totalSalary" : 60000
},
{
"status" : "inactive",
"totalSalary" : 0
}]
},
{
"company" : "amazon",
"report" : [{
"status" : "active",
"totalSalary" : 0
},
{
"status" : "inactive",
"totalSalary" : 500000.00
}]
}
]
你应该100%地检查聚合,一开始有点复杂,但一旦你掌握了窍门,它们就很棒了。我也推荐你,这是一个做这种测试的好网站
你要找的是这样的东西
db.collection.aggregate([
{
$group: {
_id: {
company: "$company"
},
report: {
$addToSet: "$offer"
}
}
}
])
你可以测试一下。您可能还希望重命名生成的_id字段,该字段在组聚合中是必需的。您可以找到如何做到这一点感谢Webox的快速响应。我需要多个字段(公司和状态),结果应根据字段“公司”对其进行分组。我的错,您希望在报告数组的单个元素中添加所有活动和非活动。那么,每个报告都将有一个“活动”将所有活动作业相加,一个“非活动”(每个公司)将所有非活动报告相加?如果有一个类别的0,它应该是0?当然,这就是我要找的。我可以生成类似的东西;但是,我需要通过取出该公司来重复数据。[{“公司”:“谷歌”,“状态”:“活动”,“总计”:10000},{“公司”:“谷歌”,“状态”:“非活动”,“总计”:500000},{“公司”:“亚马逊”,“状态”:“非活动”,“总计”:500000}]