我的文档模型如下:
{
"model": "ABC123",
"date": "2018-12-24T23:00:00.000+0000",
"price": "2000" ,
}
我想检索集合以获取文档数组:
[
{ "_id" : "ABC123", "newestDate" : ISODate("2018-12-26T23:00:00Z"), "newestPrice" : 2801.33, "lowestPriceAtAll": 1300 },
{ "_id" : "ABC124", "newestDate" : ISODate("2018-12-26T23:00:00Z"), "newestPrice" : 2801.33, "lowestPriceAtAll": 990}
]
其中_id
是model
字段,newestPrice
是最新文档的价格(按model
分组),lowestPriceAtAll
是所有文档中价格最低的价格相同的model
。
我提出了两个查询。 首先是找到最低价的文件:
offers.aggregate([
{ $sort: { "model": 1, "price": 1 }},
{
$group: {
_id: "$model",
lowestPrice: { "$first": "$price" },
lowestPriceDate: { "$first": "$date"},
}
}
])
第二个是查找最新文档:
offers.aggregate([
{ $sort: { "model": 1, "date": -1 }},
{
$group: {
_id: "$model",
newestDate: { "$first": "$date" },
newestPrice: { "$first": "$price"},
}
}
])
是否可以将这两个查询合并为一个? (最重要的是,文档必须按model
字段分组)。
答案 0 :(得分:1)
您可以使用.bin.
$facet