首页 > 解决方案 > 如何在 MongoDb 中获取具有最小/最大参数的对象

问题描述

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

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

我需要以最低价格添加项目(这很容易)和以最低价格添加对象的 id - 不知道该怎么做。结果我需要有这样的东西:

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

标签: mongodb

解决方案


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
        }
}

推荐阅读