聚合組結果總體最小值和最大值,我的對象存儲到我的收藏品,看起來像這樣:查找單查詢
[{
"_id" : ObjectId("56bcbe570793be2e5025567e"),
"CarPlate" : "AB123CD",
"Brand" : "BMW",
"Version" : "316d",
"Description" : "BMW 316d",
"Prices" : [
{
"PriceType" : NumberInt(0),
"VatType" : NumberInt(0),
"Currency" : "EUR",
"Value" : 20100.0
},
{
"PriceType" : NumberInt(3),
"VatType" : NumberInt(0),
"Currency" : "EUR",
"Value" : 23900.0
},
{
"PriceType" : NumberInt(4),
"VatType" : null,
"Currency" : "EUR",
"Value" : 30950.0
}
]
}, {
"_id" : ObjectId("56bcbe570793be2e5025567f」),
"CarPlate" : "AB123CE」,
"Brand" : "BMW",
"Version" : "318d",
"Description" : "BMW 318d",
"Prices" : [
{
"PriceType" : NumberInt(0),
"VatType" : NumberInt(0),
"Currency" : "EUR",
"Value" : 23900.0
},
{
"PriceType" : NumberInt(3),
"VatType" : NumberInt(0),
"Currency" : "EUR",
"Value" : 23900.0
},
{
"PriceType" : NumberInt(4),
"VatType" : null,
"Currency" : "EUR",
"Value" : 40250.0
}
]
}]
我想檢索最小和最大的價格值[對於整個集合],其中PriceType等於4使用單個查詢。
我找到了一種方法來做到這一點,但運行兩個不同的查詢(基本上是相同的查詢,但使用不同的排序)
db.Cars.aggregate(
[
{
$unwind: '$Prices'
},
{
$match: {
'Prices.PriceType': 4
}
},
{
$group: {
_id: '$CarPlate',
valueMin: { $min: '$Prices.Value' },
valueMax: { $max: '$Prices.Value' }
}
},
{
$sort: {
valueMin: 1
}
},
{
$limit: 1
}
]
);
任何提示?
澄清你想找到的最小值和最大值爲每車/整個集合中的文檔/對象?或整個集合中的一分鐘和一個最大值 – ibininja
到整個集合 – imperugo
因此,根據您的示例數據,您希望得到類似這樣的結果? '{min:20100.0,max:40250.0}' –