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

Hou*_*man 10 mongoose mongodb node.js

mongodb版本3.0.1
mongoose版本4.0.3

我正在尝试这样做:

groupsModel.updateQ({_id:group._id},{
    $unset:{"moderators":""},
    $set:{"admins":newAdmins}
})
Run Code Online (Sandbox Code Playgroud)

而且我从catch陈述中得到一个MongoError

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

但它不是空的.

moderators但是,不在架构中,这就是为什么我要删除它.

Joh*_*yHK 27

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

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

  • 遇到相同的错误,以为我丢失了它,直到我意识到该字段不在我的架构中。 (3认同)