如何在mongo db中触发findoneandupdate查询来更新对象数组

时间:2017-12-06 06:17:52

标签: node.js mongodb

我想更新数组对象的字段。 我想为经验[0]更新_idWorksInRestaurant字段。

这是我的json对象:

{ 
    "_id" : NumberInt(0), 
    "_idUserProfile" : NumberInt(1), 
    "experience" : [
    {
        "fromDate" : "06/2017", 
        "zip" : "95014", 
        "restaurantType" : "Family Style", 
        "_idWorksInRestaurant" : "8020", 

    }, 
    {
        "fromDate" : "11/2017", 
        "restaurantType" : "Ethnic", 
        "_idWorksInRestaurant" : "-1",

    }], 

"__v" : NumberInt(0)

这是我的代码:在bari变量中,我传递索引号

var t = "experience." + bari + ".$._idWorksInRestaurant";
var z = "experience."+bari+"._idWorksInRestaurant";
ModelBarTender.findOneAndUpdate({ _idUserProfile: user._id, z: req.body.experience[bari]._idWorksInRestaurant },
    {
         $set: { t: restoid },
         $new: true, upsert: true
    },
    function (err, bartender) {
        if (!err) {
             bari++;
             bartenderexp(exp, req, imageURL, i9form, bari, callback);
        }
    }
);

1 个答案:

答案 0 :(得分:0)

var updateObj = {$set:{}};
updateObj.$set["experience." + bari + "._idWorksInRestaurant"] = restoid;
ModelBarTender.findOneAndUpdate({
    _idUserProfile: user._id
}, updateObj, {
    new: true, upsert: false
}, function (err, bartender) {
    if (!err) {
        bari++;
        bartenderexp(exp, req, imageURL, i9form, bari, callback);
    }
});