$ unset是空的。您必须指定如下字段:{$ unset:{<field>:...}}

时间:2015-06-02 23:21:05

标签: node.js mongodb mongoose

mongodb 3.0.1版 mongoose版本4.0.3

我试图这样做:

groupsModel.updateQ({_id:group._id},{
    $unset:{"moderators":""},
    $set:{"admins":newAdmins}
})

我从catch陈述

获得了MongoError

'\'$unset\' is empty. You must specify a field like so: {$unset: {<field>: ...}}'

但它不是空的。

但是,

moderators不在架构中,这就是我尝试删除它的原因。

1 个答案:

答案 0 :(得分:22)

我无法重现该错误消息,但正如您所见,Mongoose只会更新架构中定义的字段。但是,您可以通过包含strict: false选项来覆盖该默认行为:

groupsModel.update(
    {_id: group._id},
    {$unset: {"moderators": ""}, $set:{"admins": newAdmins}},
    {strict: false}
)