Javascript MongoDB:使用空参数设置$unset会导致409错误

Javascript MongoDB:使用空参数设置$unset会导致409错误,javascript,mongodb,Javascript,Mongodb,我尝试动态设置或取消设置值。大多数情况下,我必须同时做这两件事,但并不总是这样。我就是这么做的: Collection.update( { _id: id }, { $set: data, $unset: remove }, function (error) { console.warn(error); } ); 如果设置了数据和删除,则此操作有效。但并不是总有什么东西需要移除。因此,如果rem

我尝试动态设置或取消设置值。大多数情况下,我必须同时做这两件事,但并不总是这样。我就是这么做的:

Collection.update(
    { _id: id }, 
    { 
        $set: data, 
        $unset: remove 
    }, 
    function (error) { 
        console.warn(error);
    }
);
如果设置了
数据
删除
,则此操作有效。但并不是总有什么东西需要移除。因此,如果
remove={}
,我将得到一个409错误,因为
remove
是空的


如何改进更新?

在传入对象之前,您需要额外检查
删除对象的大小:

var update = {
    $set: data
}

if (Object.keys(remove).length > 0) {
    update['$unset'] = remove;
}

Collection.update(
    { _id: id }, 
    update, 
    function (error) { 
        console.warn(error);
    }
);