Remove object fields by updating the complete object

时间:2016-01-16 19:33:16

标签: javascript mongodb

This is some data which is stored in a mongoDB document:

{ 
    _id: "123"
    order: 1
    parent: "Dueqmd64nTxM3u9Cm"
    type: "article"
    unit: "kg"
}

While all the saved data will be calculated and validated first (that's why I don't use only data = { order: 2 }), I'm using the complete object to update the document:

var data = { 
    order: 2
    parent: "Dueqmd64nTxM3u9Cm"
    type: "article"
    unit: "kg"
}

Collection.update(
    { _id: 123 }, 
    { $set: data }
);

This is working.

But if I want to remove some values, it doesn't work:

var data = { 
    order: 2
    parent: "Dueqmd64nTxM3u9Cm"
    type: "article"
    unit: undefined
}

Collection.update(
    { _id: 123 }, 
    { $set: data }
);

I'm expecting the unit-field to get removed. But that isn't the case...

1 个答案:

答案 0 :(得分:0)

要删除字段,请使用 $unset 运算符:

data = {
    unit: ""
};
Collection.update(
    { _id: 123 }, 
    { $set: data }
);