mongodb - 如何在 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"
}
解决方案
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
}
}
推荐阅读
- html - 我可以在不使用 li 或 ul 标签的情况下创建 s 子列表吗
- debezium - 使用 debezium 捕获现有数据(完全刷新)
- python - 这个随机的唯一 ID 生成器发生碰撞的几率是多少?
- python - ImportError:无法导入名称 dump_age
- qt - 如何在Qt中更改仪表的步长
- typescript - TypeScript 中的泛型类型继承
- apache-drill - Apache Drill DFS Information_schema / Metadata
- java - 扫描仪 nextInt 中的 InputMismatchException
- android - 使用 react-native init 将 Native sdk 集成到 react native
- node.js - 如何使用 mongodb 文档字段在 node.js 中进行数学计算?