語境:
我有一個充滿檔案的 MongoDB,如下所示:
[
{
"_id": "615dc97907f597330c510279",
"code": "SDFSDFSDF",
"location": "ABC1",
"week_number": 39,
"year": 2020,
"region": "NA"
},
....
{
"_id": "615dc97907f597330c51027a",
"code": "SDFSGSGR",
"location": "ABC1",
"week_number": 42,
"year": 2021,
"region": "EU"
},
....
{
"_id": "615dc97607f597330c50ff50",
"code": "GGSFHSFS",
"location": "DEF2",
"week_number": 42,
"year": 2021,
"region": "EU",
"audit_result": {
"issues_found": true,
"comment": "comment."
}
}
]
問題
我正在嘗試撰寫一個聚合,它應該回傳具有最高“week_number”和最高“year”的所有物件。所以在上面的例子中,我想回傳_id“615dc97907f597330c51027a”和“615dc97607f597330c50ff50”的完整檔案。
我嘗試了多種方法。喜歡先排序,然后分組,但沒有成功。目前我有這樣的事情,這似乎合乎邏輯,但它回傳所有檔案,不僅是周和年最高的檔案
[
{
'$match': {
'$expr': {
'$max': '$week_number',
'$max': '$year'
}
}
}
]
uj5u.com熱心網友回復:
您可以在聚合管道中執行以下操作:
$group通過year和week_number; 推_id入一個陣列以供將來查找$sort由year: -1和week_number: -1$limit獲得第一個分組,即最大year和week_number$lookup使用_id步驟 1 中先前存盤的陣列的原始檔案$replaceRoot取回檔案
這是Mongo 游樂場供您參考。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/326162.html
標籤:mongodb mongodb-查询 聚合框架 皮蒙戈 聚合函数
