如何找到集合的子文档并使用Mongoose / MongoDB更新它?

时间:2016-06-01 04:37:39

标签: node.js mongodb mongoose

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

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

如何根据attending

更改成员user

例如:

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.代码非常关闭,但这是一次远景尝试。以前从未使用过子文档/嵌入式文档。

1 个答案:

答案 0 :(得分:1)

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

试试这个:

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