在MongoDB上,如何限制查询,当我的callback是在“查找”?

我在MongoDB中有这个查询

db.privateMessages.find( { $or : [ {fromId: userId, toId: socket.userId} , {fromId: socket.userId, toId: userId} ] }, function(err, messages) { pushSvdMsgs(messages); }); 

它完美的工作,除了我得到50个结果的事实。

我试过这个:

 db.privateMessages.find( { $or : [ {fromId: userId, toId: socket.userId} , {fromId: socket.userId, toId: userId} ] }, function(err, messages) { pushSvdMsgs(messages); }).limit(10); 

但是这也没有帮助,所以我尝试了下面这也没有帮助限制它。

 db.privateMessages.find( { $or : [ {fromId: userId, toId: socket.userId} , {fromId: socket.userId, toId: userId} ] }, { $limit : 2 }, function(err, messages) { pushSvdMsgs(messages); }); 

我怎样才能限制这个查询结果的数量,并仍然像我一样调用callback?

你说得对。 试试这个:

 db.privateMessages.find( { $or : [ {fromId: userId, toId: socket.userId} , {fromId: socket.userId, toId: userId} ] }, {}, { limit : 2 }, function(err, messages) { pushSvdMsgs(messages); }); 

语法是find(query, fields, options) 。 我们需要这个空的对象来使驱动程序正确地解释选项。