mongodb将查找排序顺序转换为findAndModify

时间:2015-12-25 20:31:53

标签: node.js mongodb

我使用节点本机驱动程序

成功获得了推荐率最低的用户之一
users.find().sort({referrals:1}).limit(1).toArray(function(error,result){
    console.log(error||result);
    });

^ 这很好用

v 我尝试过的这个和其他变种

当我想通过findAndModify使功能更好时,我会一遍又一遍地失败(这是我认为我从文档中得到的最接近的)

users.findAndModify({},{referrals:1},{$inc:{referrals:1}},{}).toArray(function(error,result){                                                          
    console.log(error||result);
    });

当我找到他时,我希望得到一个推荐率最低的用户和++ 1他的推介

2 个答案:

答案 0 :(得分:1)

尝试使用此查询:

db.users.findAndModify({
    sort: {referrals:1}, 
    update: {$inc: {referrals:1}}, 
    new: true
}, callback)

Here您可以看到findAndModify的所有可能参数。

答案 1 :(得分:0)

对于那些可能也在使用节点本机驱动程序的人:

根据这个答案https://stackoverflow.com/a/24326067/990434

  

节点本机驱动程序实现中的.findAndModify()方法与mongo shell实现不同。主要区别在于您没有为操作命名“关键”部分。

所以在这种情况下代码是:

db.users.findAndModify(
     {}//query
    ,{referrals:1}//sort
    ,{$inc:{referrals:1}}//update
    ,{new:true}
    ,function(error,result){});