我試圖在同一個查詢中找到許多記錄,這些記錄屬于這種型別
{
"key": 2,
time: 3
},
{
"key": 2,
time: 5
},
{
"key": 3,
time: 4
}
例如,我想檢索key inside [2,3]具有相對最大時間量的記錄,因此在這種情況下,記錄應該回傳{ "key": 2, time: 5 }并且{ "key": 3, time: 4 }應該回傳。
到目前為止,我只知道如何key在經過驗證的陣列中檢索記錄,但我不明白如何為陣列中的每個鍵獲取最新時間的記錄,我不想使用where運算子。
這是一個提供場景的游樂場https://mongoplayground.net/p/5sWnn8_HnqK
uj5u.com熱心網友回復:
實作這一點的最簡單方法是匹配檔案,對它們進行降序排序,然后為每個鍵選擇“第一個”檔案,如下所示:
db.collection.aggregate([
{
$match: {
key: {
$in: [
1,
2,
3
]
}
}
},
{
$sort: {
time: -1
}
},
{
$group: {
_id: "$key",
first: {
$first: "$$ROOT"
}
}
}
])
uj5u.com熱心網友回復:
您可以使用聚合函式來查找每個鍵的最大元素。示例:https : //mongoplayground.net/p/P9JSuvTHdZa
db.collection.aggregate([
{
$match: {
key: {
$in: [
2,
3
]
}
}
},
{
$group: {
_id: "$key",
time: {
$max: "$time"
}
}
}
])
已編輯:如評論中建議的那樣
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/408424.html
標籤:
