我無法在 Google 或 SO 上找到問題的答案。
我有一個集合,例如:
{ "_id" : "0", "timestamp" : 160000 }
{ "_id" : "00", "timestamp" : 160000 }
{ "_id" : "000", "timestamp" : 150000 }
而且我想根據 獲得最高行timestamp,而不僅僅是最高行。
這例如:
{ "_id" : "0", "timestamp" : 160000 }
{ "_id" : "00", "timestamp" : 160000 }
顯而易見的解決方案是對 DESC 進行排序并獲取前 n 行,但這實際上并沒有完成所需的操作,我需要知道頂部元素的數量等。
我想獲取頂行的時間戳,然后匹配所有具有該時間戳的行,或者其他什么?
先感謝您!
uj5u.com熱心網友回復:
找到最大值后,您必須使用自查找對同一集合執行查找。
db.collection.aggregate([
{
"$sort": {
"timestamp": -1
}
},
{
"$limit": 1
},
{
"$lookup": {
"from": "collection",
"localField": "timestamp",
"foreignField": "timestamp",
"as": "topTimeStamp"
}
},
{
"$project": {
"_id": 0,
"result": "$topTimeStamp"
}
},
])
Mongo 示例執行
按timestamp降序排列鍵以提高查詢性能。
如果集合中的檔案數量較少,我建議您用stage替換$sort和$limitstage,$group并使用$max累加器找到最大值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/364509.html
上一篇:AWK如何處理多個檔案并在控制檔案中比較它們!(不是命令列單行)
下一篇:Django按日期排序
