2015-06-07 67 views
0

我的項目中插入了大量的歷史數據文件放到一個歷史的收集,因爲他們決不會被修改的順序是正確的(因爲沒有更新的推移),但向後檢索。MongoDB中找到最後一個記錄的順序第一

我使用這樣的事情在20個記錄檢索數據。

var page = 2; 

hStats_collection.find({name:name},{_id:0, name:0}).limit(20).skip(page*20).toArray(function(err, doc) { 
}); 

讀我的眼睛乾燥後,$排序是沒有好,而且它似乎顛倒順序,上面的代碼檢索是通過時間戳元素的文檔中添加一個索引,最好的辦法,其中我已經有一個名爲started(自epoc以來的秒)的有用的項目,並且需要爲它創建一個索引。

http://docs.mongodb.org/manual/tutorial/create-an-index/ 文檔說我可以這樣做:

hStats_collection.createIndex({ started: -1 }) 

如何更改我的.find()以上代碼找到name並引用started索引,以便結果回來最新到最舊(作爲對自然發現()最舊到最新)。

回答

1

hStats_collection.find({name:name},{_id:0, name:0}).sort({ started:-1 }).limit(20).

+0

確實需要的createIndex的?或者只是工作? – ChrisAdmin

+0

這並不需要索引,但如果沒有索引,可能會很慢。試着做一個沒有索引的查詢,查看查詢時間是否適合你。如果需要超過幾秒鐘,請考慮創建一個索引。 – zlumer

+0

啊我看到它工作得很好,我是順便把文檔說是有32MB的限制混淆,這一限制只適用如果沒有的「開始」指數 - 錯過了位。謝謝! – ChrisAdmin

相關問題