无法使用$ set操作插入新的数组字段

时间:2017-01-27 08:58:53

标签: node.js mongodb mongoose

我正在使用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',但不会插入新数组字段。

有什么问题?

1 个答案:

答案 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");
        }
});