你需要先把
analog
变量对象转换为另一个具有使用点符号的属性的对象。这使
$set
操作员正确更新点符号中表示的嵌入字段,而不更新/删除/影响其他字段。
let setObject = {};
Object.keys(analog).forEach(function (key) {
setObject[`analog.${key}`] = analog[key];
});
DeviceModel.update(
{ '_id': device.id },
{ '$set': setObject },
function(err, doc) {
if(err) throw err;
console.log("Device switches updated");
}
);