如何在MongoDb中获取带有min/max参数的对象



我有一个包含类似对象的集合:

{
_id: "1"
itemList: [
{ itemId: "23", price: 234 },
{ itemId: "24", price: 444 },
{ itemId: "25", price: 268 },
]
}

我需要添加最小价格的Items(这很容易(和最小价格的对象id-不知道怎么做。结果我需要这样的东西:

{
_id: "1"
itemList: [
{ itemId: "23", price: 234 },
{ itemId: "24", price: 444 },
{ itemId: "25", price: 268 },
]
minPrice: 234,
minPriceItemId: "23"
}
db.collection.aggregate([
{$set: {
minPrice: {$arrayElemAt: ["$itemList", {$indexOfArray: ["$itemList.price", {$min: "$itemList.price"}]}]
}}}
])

结果将变成:

{
"_id" : "1",
"itemList" : [
{
"itemId" : "23",
"price" : 234
},
{
"itemId" : "24",
"price" : 444
},
{
"itemId" : "25",
"price" : 268
}
],
"minPrice" : {
"itemId" : "23",
"price" : 234
}
}

最新更新