Node.js 在MongoDB上,当我的回调在“内部”时,如何限制查询;找到“;?

Node.js 在MongoDB上,当我的回调在“内部”时,如何限制查询;找到“;?,node.js,mongodb,Node.js,Mongodb,我在MongoDB中有这个查询 db.privateMessages.find( { $or : [ {fromId: userId, toId: socket.userId} , {fromId: socket.userId, toId: userId} ] }, function(err, messages) { pushSvdMsgs(messages); }); 它工作得很好,除了我得到50个结果 我试过这个: db.pri

我在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); });

我如何限制此查询的结果数量,并且仍然以与我相同的方式调用回调?

您几乎完全正确。试试这个:

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

语法是
find(查询、字段、选项)
。我们需要那个空对象来让驱动程序正确解释选项。

那么,你得到的文档超过50个,而你只需要50个吗?@SergioTulentsev几乎,我很快在这里看到了一个工作非常好的代码,它是:db.privateMessages.find({$or:[{fromId:userId,toId:socket.userId},{fromId:socket.userId,toId:userId}]},{},{limit:10},function(err,messages){pushSvdMsgs(messages);};但是从现在开始,我想知道两件事,为什么会有一个空的{},这就是我如何排序的地方,因为我也想按“timeStamp”排序DESCOk,如果它对你有效,那么我将取消删除我的答案,这样你就可以接受它。我不使用node.js,所以我不确定我在谷歌上搜索是否正确:)显然,语法是(查询、字段、选项)。所以我们需要空的
{}
来放置选项。你在使用什么驱动程序?Mongodb原生?啊,那么“order by”如果“驱动程序”是指我如何从Node.js与MongoDB通信(抱歉,我对术语的了解很糟糕,呵呵),那么我使用“mongojs”。我以前尝试过Mongoose,但没有太多的运气让它工作。感谢您的帮助,并取消删除您的答案,我可以接受!:)该“空对象”用于排除结果集中返回的特定字段。