【问题标题】:Updating nested fields with Mongoose in Node.js在 Node.js 中使用 Mongoose 更新嵌套字段
【发布时间】:2021-01-10 17:24:22
【问题描述】:

我有以下查询,它在 MongoDB CLI 客户端中成功,但在 Mongoose 中不成功:

// MongoDB client successfully updates collection

db.col.updateOne({_id: "5f687da23a4dc9071baefd6d"}, {$set: { 'licence.count' : 5 }})

// Mongoose query which fails

Organisation.updateOne({_id: "5f687da23a4dc9071baefd6d"}, {$set: {'licence.count' : 5}})

该表只是一个 _id,其中包含一个名为 license 的字段,其中包含一个包含计数的嵌套文档。访问 MongoDB 中的嵌套字段是否有不同的语法,因为我可以在顶层设置字段,例如许可证本身?

谢谢

【问题讨论】:

  • 使用猫鼬查询时会发生什么?
  • 我正在运行查询 which mocha 在 try catch 块内使用 await 以便捕获错误。当我运行查询时,它没有错误地通过并且无法应用更新。我觉得这很奇怪,因为确实会发生其他错误。我使用强制重复的 _id 查询对此进行了测试
  • 您可能需要添加 { new: true } 来告诉 mongoose 在查询后返回更新后的文档。所以,Organisation.updateOne({_id: "5f687da23a4dc9071baefd6d"}, {$set: {'licence.count' : 5}}, {new:true})
  • 但我不想更新我只想更新的新文档?

标签: node.js mongodb mongoose


【解决方案1】:

您的 Mongoose 查询中有错字:

{$set {'lic...

应该是这样的

{$set: {'lic...

【讨论】:

  • 好收获。如果这确实是问题所在,那么 OP 应该报告了一条错误消息。让我们看看他们说了什么,如果这不是帖子中的错字。
  • 这个错误只存在于例子中,我已经更新了。还有其他可能吗?
猜你喜欢
  • 2017-07-05
  • 2016-08-17
  • 2018-10-10
  • 2019-09-27
  • 2011-10-17
  • 2016-05-03
  • 1970-01-01
  • 2021-09-19
  • 2017-10-26
相关资源
最近更新 更多