[英]MongoDB Aggregation General Summation and Summation By Unique Keys
假設我在經銷商的售車文件中有一組對象:
{
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
,而可以在“ uniqueCars”數組字段上使用$size
運算符,它實際上為您提供了數組的大小。
db.cars.aggregate([
{
$match: { "salesmanId": "salesmenId2" }
},
{
$group: {
_id: "$salesmanId",
uniqueCars: { $addToSet: "$model"},
totalCars: { $sum: 1 }
}
},
{
$project : {
_id : 1,
totalCars : 1,
uniqueCar : { $size : "$uniqueCars" }
}
}
])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.