【问题标题】:$unset is empty. You must specify a field like so: {$unset: {<field>: ...}}$unset 为空。您必须像这样指定一个字段:{$unset: {<field>: ...}}
【发布时间】:2015-08-16 23:04:29
【问题描述】:

mongodb 3.0.1版
猫鼬版本 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: {&lt;field&gt;: ...}}'

但它不是空的。

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

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

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

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

    【讨论】:

    • 有同样的错误,我以为我正在丢失它,直到我意识到该字段不在我的架构中。
    • 谢谢,我遇到了同样的问题。没有意识到我在架构和更新方法中使用了 2 个不同的名称。
    猜你喜欢
    • 2019-02-13
    • 2020-09-23
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多