我正在使用mongo和mongoose来更新现有文档的数组。
这是我的原始文件
{
device_id : 'abc',
is_online : false
}
我需要更新两个字段,一个是'is_online'
字段,另一个是'actuators'
字段,这是一个数组字段:
var update = {};
update.is_online = false;
update.actuators = [
{
'port': 1,
value: 0,
'type': 'binary',
description: 'button 0'
},
{
'port': 2,
value: 0,
'type': 'binary',
description: 'button 1'
}
];
DeviceModel.findOneAndUpdate(
{ device_id: device_id },
{ $set: update },
{ new: false, upsert: true },
function(err, doc) {
}
)
但这仅更新现有字段' is_online',但不会插入新数组字段。
有什么问题?
答案 0 :(得分:0)
you have to push the values to array instead $set
DeviceModel.update({device_id: device_id},{$pushAll: {actuators:update.actuators}},{upsert:true},function(err){
if(err){
console.log(err);
}else{
console.log("Successfully added");
}
});