$ unset是空的。 您必须像这样指定一个字段:{$ unset:{<field>:…}}

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 ,但是,不在架构,这就是为什么我想要删除它。

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

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