gpt4 book ai didi

javascript - MongoDB聚合通用求和和按唯一键求和

转载 作者:行者123 更新时间:2023-11-28 18:57:51 25 4
gpt4 key购买 nike

假设我在经销商处出售的汽车的文档中有一组对象:

{
id: 'randomId',
model: 'Jetta'
carId: 'randomId',
salesmanId: 'salesmenId3'
},
{
id: 'randomId',
model: 'Civic'
carId: 'randomId',
salesmanId: 'salesmenId2'
},
{
id: 'randomId',
model: 'Civic'
carId: 'randomId',
salesmanId: 'salesmenId2'
},
{
id: 'randomId',
model: 'S200'
carId: 'randomId',
salesmanId: 'salesmenId'
},
{
id: 'randomId',
model: 'Jetta'
carId: 'randomId',
salesmanId: 'salesmenId3'
},
{
id: 'randomId',
model: 'Civic'
carId: 'randomId',
salesmanId: 'salesmenId2'
},
...

我希望能够查询每个 salesmanId 的汽车总数以及每个 salesmanId 的唯一汽车型号总数。

例如,如果我匹配“salesmenId2”,我希望返回以下内容:

{
salesmanId: 'salesmenId2',
totalCars: 3,
totalUniqueCars: 1
}

这是我到目前为止所拥有的:

$match: {'salesmanId':  'salesmenId2' },
{
$group: {
_id: '$salesmanId',
uniqueCars: { $addToSet: '$model'},
totalCars: { $sum: 1 }
}
},
{
$unwind:"$uniqueCars"
},
{
$group: {
_id: "$_id",
totalUniqueCars: { $sum:1}
}
}

现在只返回唯一汽车的总数。知道我可能做错了什么吗?

最佳答案

您甚至不必使用 $unwind,而是可以使用 $size “uniqueCars”数组字段上的运算符,它实际上给出了数组的大小。

 db.cars.aggregate([
{
$match: { "salesmanId": "salesmenId2" }
},
{
$group: {
_id: "$salesmanId",
uniqueCars: { $addToSet: "$model"},
totalCars: { $sum: 1 }
}
},
{
$project : {
_id : 1,
totalCars : 1,
uniqueCar : { $size : "$uniqueCars" }
}
}
])

关于javascript - MongoDB聚合通用求和和按唯一键求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33272352/

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