2017-08-29 22 views
1

時候我已經分貝文件和文件mongdb實例BMongdb組合限制並使用排序查找功能

a_id type 
1  1 
2  2 
3  3 
4  4 

現在。我想按照上例中的相同順序提取表b中的最後N(1,2,3,4,5,...)個值。但如果我使用跳過功能:

b.find().skip(M) 

如果M> N,則結果爲空=>錯誤。我想動態M. 如果我使用排序和限制,那麼它不會給出正確的順序。

b.find().sort({$natural:-1}).limit(M) 

結果:

4 4 
3 3 

我想辦法解決!

+0

'$ natural'不會做你認爲它的事情,通常不應該使用。你可能只想',排序({_id:-1})',但你的問題有點不清楚。可能是因爲你可能在抽象,而不是展示你的真實案例。但是如果你想要「插入順序」,那麼由於'ObjectId'(通常是'_id'的默認值)是「單調的」或「不斷增加的值」,所以這通常是最真實的指標。 –

回答

0

您可以使用相同的skip()來訪問集合中的最後N個文檔。

N =最後N文件被訪問

所以查詢是

b.find()跳過(b.count() - N)。.pretty()

,或者你可以與外殼蒙戈玩正如像

變種TOTALCOUNT = b.count()

db.find()的javascript跳過(TOTALCOUNT - N)。.pretty()