2017-03-09 18 views
0

我有一個很大的mongodb集合,其中每個文檔代表一個簡單的日誌消息,以設定的時間間隔(例如1分鐘)發生。每當我使用Mongoose執行Find時,我會按照添加的順序獲取數據庫的全部內容。我正在查找一個查詢,我可以在不對時間戳進行排序的情況下獲得最後10個添加的記錄。以下是我的文檔樣本:如何在不使用排序的情況下檢索mongodb-mongoose中最近添加的文檔?

[ { _id: 58bd2dcd51d1169260ccbdac, 
    contentID: 1, 
    clicks: 50, 
    views: 61 }, 
{ _id: 58bd43d40fda0d25b0c6724e, 
    'contentID: ': 1, 
    clicks: 45, 
    views: 72 }, 
{ _id: 58bd54ae2d67e820143eddda, 
    'contentID: ': 1, 
    clicks: 25, 
    views: 32 }] 
+0

您可以通過'''_id進行排序:-1'''但你仍然需要進行排序。如果您沒有對99%的案例進行排序,您將獲得自然順序的行。但在1%,他們將隨機訂購。這裏是你可以找到完整的解釋http://stackoverflow.com/questions/11599069/how-does-mongodb-sort-records-when-no-sort-order-is-specified – Bonanza

回答

1

不幸的是,我相信你將不得不在你的查詢中使用排序。

example.find()sort.({"_id": -1}).limit(10) 

,使其更容易,創建一個變量,然後調用變量

​​
+0

如果你想獲得最後十記錄知道他們是一個潛力,他們不是最新的,但是陣列中的最後十個;使用$ slice示例'db.posts.find({},{comments:{$ slice:[-10,10]}})'這會爲您提供10行註釋數組,從最後一項的第10行開始。 https://docs.mongodb.com/manual/reference/operator/projection/slice/ – Govna

相關問題