node.js - $unset 为空。您必须指定一个像这样的字段 : {$unset: {<field>: . ..}}

标签 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但是,它不在架构中,这就是我尝试删除它的原因。

最佳答案

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

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

关于node.js - $unset 为空。您必须指定一个像这样的字段 : {$unset: {<field>: . ..}},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30608208/

相关文章:

javascript - 不通过 Node 应用程序访问 mongodb atlas 上的旧数据

javascript - 为什么 Istanbul/tap 代码覆盖在覆盖每个条件路径时报告 switch 语句未覆盖?

javascript - Node.js 8.9.4 中使用默认参数的对象解构

MongoDB > 将新项目添加到数组内的对象中

javascript - 如何在 Node.js 应用程序中处理 mongoose 中的错误

node.js - 在 Mongoose pre hooks 中获取模型数量

html - 使用查询字符串表达 res.sendFile()

node.js - ChromeOptions 使用 Selenium ChromeDriver for node.js 导致引用错误

MongoDB 提示、技巧和陷阱

node.js - Mongoose db find方法之前的 Node 功能整理