node.js - MongoDB:用字典更新数组中的文档

标签 node.js mongodb

我找到了StackOverflow Question这非常接近回答我的问题,但还不够。

回答这个原始问题(修改数组中的文档),但假设您没有希望进行的特定更改。相反,我有一本我希望进行的更改的字典。这是一个例子:

原始文档

{
    _id: something,
    recipients: [{id:1, name:"Andrey", isread:false}, {id:2, name:"John", isread:false}]
}

要进行的更改

{
    isread: true,
    fullname: 'jonathan'
}

如何将这本更改字典应用到 John (id:2)? 如果相关,我正在使用 MongoDB-Node.JS Driver 谢谢

最佳答案

就像您引用的问题一样,您需要使用 $ positional operator ,但在本例中使用 update:

collection.update({_id:something, 'recipients.id': 2}, {$set: {'recipients.$': {
    isread: true,
    fullname: 'jonathan'
}}}, function (err) {...

编辑

要不替换整个数组元素对象,您必须执行以下操作:

collection.update({_id:something, 'recipients.id': 2}, {$set: {
    'recipients.$.isread': true,
    'recipients.$.fullname': 'jonathan'
}}, function (err) {...

关于node.js - MongoDB:用字典更新数组中的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11871238/

相关文章:

node.js - 如何在传递一些上下文时在 expressjs 中重定向?

ios - Twilio 视频 - “Failed to connect to room with error: SIP error 403”

javascript - 如何在 hapi 0.8.4 中添加路由

python - 在同一个 Dockerfile 中使用 Python 和 Node.js 并创建一个我在云中同时使用的镜像

java - mongoDB 查询 Java 代码 [$和 lte 和 gte 的条件]

mongodb - 在 MongoDB 中使用 directoryperdb 的好处

mongodb - 使用 elasticsearch sink 连接器删除和编辑操作不起作用

javascript - 将原始查询转换为 Sequelize

javascript - MongoDb、NodeJs、Express 和 Angular 2,来自两个集合的数据连接、检索和显示

javascript - 未处理的PromiseRejection警告: | DeprecationWarning: | Mongoose 5