如何通过Post更新MongoDb对象中的特定值?

时间:2018-01-04 15:26:58

标签: node.js mongodb post

我有一个包含子对象的模式,我希望能够更新其中的特定键。如果我只更新一个特定的密钥 - 比如在Post示例中 - 它会清空所有其他密钥..

例如:

{ 
  "_id": "32323323",
  "names":{
            "firstname":"John",
            "lastname":"foo",

            "workers":{
                "position":"manager",
                 "address":"1 st"
            }
          }
}

我想仅更新"位置"密钥通过邮政请求,例如:

   $.post({
            url: 'workers/information/',
            data: {
                user_id: user_id,
                names: {
                    workers: {
                        position: some data,
                    }
                }
            },
            success: function (result) {
                alert('Your information updated successfully')

            }

    });

以下是NodeJs服务器中的更新方法:

 UserDataController.updateWorkersInformation = function (userID, workersInformation, cb) {

   if (userID) {
      user.findOneAndUpdate({_id: userID}, workersInformation, function (err, result) {
             if (err) return cb(err);
             return cb(null, result);
          });
     }
 };

1 个答案:

答案 0 :(得分:2)

你可能想看看猫鼬。它提供了比本机客户端更简单的界面。

https://www.npmjs.com/package/mongoose

但是,正如所提到的评论,您缺少$ set运算符。 {$组:workersInformation}

如果在没有$ set运算符的情况下调用update,则整个文档将替换为您的更新对象。

http://mongodb.github.io/node-mongodb-native/2.2/tutorials/crud/