node.js - 如何使用 Mongoose/MongoDB 查找集合的子文档并更新它?

标签 node.js mongodb mongoose

我有一个像这样的基本文档:

_id: fm393nrr,
name: 'My Event'
members: [{
   user: 94iru134nf
   attending: 1
}, {
   user: er9fr94,
   attending: 0
}]

如何根据用户更改成员出席

例如,类似:

var eventToFind = 'fm393nrr'; //usually retrieved by req.params
var userToFind = 'er9fr94'; //usually retrieved by req.body.user

Event.findOneAndUpdate({
       _id: eventToFind
    }, {
       $set: {members.attending: {.....}}
    }
).exec(function(){....});

在上面,我尝试将 er9fr94 的成员设置为 attending 为 1。代码非常偏离,但这是一个长期的尝试。以前从未使用过子文档/嵌入文档。

最佳答案

处理嵌套对象时添加双引号。 $ 等于匹配的数组索引。

试试这个:

Event.findOneAndUpdate({
   _id: eventToFind,
   "members.user":userToFind,
}, {
   $set: {"members.$.attending": {.....}}
})

关于node.js - 如何使用 Mongoose/MongoDB 查找集合的子文档并更新它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37559538/

相关文章:

javascript - 处理多个请求,而前一个请求不会阻塞下一个请求

node.js - 语音识别,nodeJS

performance - mongodb 插入时 Node 应用程序不工作

mongodb - 将 Cloudant 服务与 Bluemix 分开

mongodb - 在 ubuntu 上安装 mongo 10 gen 这是客户端、服务器还是两者?

node.js - Laravel Vue 环境变量在哪里?

mongodb - 为什么 mongo 计数不加起来?

javascript - Mongoose 填充的Where子句

forms - 从 Mongoose Schema 对象生成表单?

mongodb - 想要更新 mongodb 中的二级数组对象