MongoDB:使用空参数设置$unset给出409错误

MongoDB: Set $unset with empty parameter gives 409 error

本文关键字:unset 给出 错误 设置 参数 MongoDB      更新时间:2023-09-26

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

Collection.update(
    { _id: id }, 
    { 
        $set: data, 
        $unset: remove 
    }, 
    function (error) { 
        console.warn(error);
    }
);

如果设置了dataremove,则这是有效的。但并不总是有一些东西必须删除。因此,如果remove = {},我将收到409错误,因为remove为空。

如何改进更新?

在传入 remove 对象之前,您需要对它的大小进行额外的检查:

var update = {
    $set: data
}
if (Object.keys(remove).length > 0) {
    update['$unset'] = remove;
}
Collection.update(
    { _id: id }, 
    update, 
    function (error) { 
        console.warn(error);
    }
);