我使用mongo作为我的数据存储,用于发送的消息列表。每条消息都有一个id
,我希望能够做到的(尽可能高效)是在提供的n
反向开始之前返回id
个结果。
因此,例如,使用类似函数调用:
getHistory(start, count)
我可以提供:
getHistory("a123", 10)
哪个会在记录之前返回10条记录,其中'id =“a123”`。诀窍是ID是GUID,因此我不能仅仅基于此向后增加。
这是我到目前为止所做的,并没有从正确的位置开始:
var cursor = collection.find({id: id}).sort({timestamp: -1}).limit(10)
答案 0 :(得分:1)
未经测试,但以下行中的内容应该有效(在mongoose中):
collection.find({_id: {$lt: start}}).sort({_id: -1}).limit(10);
这应该在开始id之前找到所有元素,反转顺序并获得前10个。换句话说,在开始之前的最后10个。