gpt4 book ai didi

mongodb - 如何获取和使用 MongoDB 中的字段名称列表?

转载 作者:行者123 更新时间:2023-12-04 08:59:52 24 4
gpt4 key购买 nike

我将每个日期的价格变化数据存储在 MongoDB 中,如下所示:

{ "_id" : "A1",
"Price" :
{
"2020-08-25": {"P" : [1200, 1300, 1250]},
"2020-08-26": {"P" : [1310, 1400, 1200]},
"2020-08-27": {"P" : [1500, 1300, 1300]},
...
}

},
{ "_id" : "A2",
"Price" :
{
"2020-08-25": {"P" : [1200, 1300, 1250]},
"2020-08-26": {"P" : [1310, 1400, 1200]},
"2020-08-27": {"P" : [1500, 1300, 1300]},
...
}
}
现在,我想获得最高价格 所有日期 .如何在不写查询中的每个日期字段的情况下执行此操作?我的意思是,对于像“2020-08-25”这样的特定日期,有人可以使用 $group 和 $max 来获得该日期的最大价格值。但是,如何编写查询以获取所有日期之间的最大价格值?
谢谢

最佳答案

要获得集合中所有日期的最高价格,您需要运行聚合操作,首先获得每个文档的最高价格,这可以使用 $max 来实现。和 $map 运算符创建一个价格值数组,可以很容易地推断出最大值。
要获取数组值,您首先需要转换 Price使用 $objectToArray 记录到日期和价格的键/值对数组

db.getCollection('collection').aggregate([
{ '$set': {
'maxPricePerDocument': {
'$max': {
'$map': {
'input': { '$objectToArray': '$Price' },
'in': { '$max': '$$this.v.P' }
}
}
}
} },
{ '$group': {
'_id': 0,
'maxPriceForEntireCollection': { '$max': '$maxPricePerDocument' }
} }
])

关于mongodb - 如何获取和使用 MongoDB 中的字段名称列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63614010/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com