我有一个包含子对象的模式,我希望能够更新其中的特定键。如果我只更新一个特定的密钥 - 比如在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);
});
}
};
答案 0 :(得分:2)
你可能想看看猫鼬。它提供了比本机客户端更简单的界面。
https://www.npmjs.com/package/mongoose
但是,正如所提到的评论,您缺少$ set运算符。 {$组:workersInformation}
如果在没有$ set运算符的情况下调用update,则整个文档将替换为您的更新对象。
http://mongodb.github.io/node-mongodb-native/2.2/tutorials/crud/