当前位置 : 主页 > 网页制作 > Nodejs >

node.js – MongoDb中的条件更新

来源:互联网 收集:自由互联 发布时间:2021-06-16
是否有更好的方法只使用一次数据库调用进行此条件更新,即仅使用user.update? user.findOne({ fbPsid: sender }, 'referal', function (err, res) { if (res.referal.length 5 ) { user.update( { fbPsid: sender }, { $set: {
是否有更好的方法只使用一次数据库调用进行此条件更新,即仅使用user.update?

user.findOne({ fbPsid: sender }, 'referal', function (err, res) {
    if (res.referal.length < 5 ) { 
        user.update(
            { fbPsid: sender },
            { 
                $set: { status: { state: -11 }  },
                $push: {
                    "referal": {
                        name: '',
                        phonenumber: '',
                        email: ''
                    }
                }
            }, function (err, res){}
        );
    } else {
        sendTextMessage(sender, "You have already completed  Your Five Referal!")
    }
})
你可以使用以下查询与mongodb 3.2 :(或旧版本的findAndModify)

user.findOneAndUpdate({fbPsid:sender,'referal.4':{$exists:false}}, 
    {$set:{status: {state: -11}},$push:{"referal":{name:'',phonenumber:'',email:''}}}, 
    {new:true},
    function(error, result) {
      if(error) {
         console.log(error)
      } else {
        console.log(result);
      }
});

referal.4:{$exists:false} ==>检查数组中的索引4.如果发现任何记录,则表示数组长度小于5.

注意使用$where:$where评估JavaScript并且无法利用索引. Refer $where operator

网友评论