【发布时间】:2018-12-21 19:41:15
【问题描述】:
我有以下架构。
{
posts: [
{
_id: '5ayuunbdsyuuuyut778'
replies: [{
_id: "67hfudj7e9whduu888",
text: "something"
}]
}
]
}
我想更新特定回复的文本。 我正在使用猫鼬。
我已经写了如下查询
Post.findOneAndUpdate(
{'posts.replies._id': _id},
{$set: {'posts.$[post].replies.$[reply].text': "something1"}},
{ arrayFilters: [{'post._id': postId}, { 'reply._id': _id }]}
)
此查询未更新文档。
我错过了什么吗?我是否需要使用 ObjectId 投射 id
【问题讨论】:
-
您是否遇到任何错误?因为上面的查询对我有用......可能你的
postId或_id不正确......我试过这个User.findOneAndUpdate( {'posts.replies._id': "67hfudj7e9whduu888"}, {$set: {'posts.$[post].replies.$[reply].text': "something12"}}, { arrayFilters: [{'post._id': "5ayuunbdsyuuuyut778"}, { 'reply._id': "67hfudj7e9whduu888" }]} ) -
你在 mongo 上使用哪个版本?
-
@Anthony Winslet。我没有收到任何错误。当我使用 {new:true} 时,我得到的文档没有更新
-
他们是否在数据库中更新?以及您如何使用
multi: true? -
我没用过multi: true。我需要吗?
标签: mongodb mongoose mongodb-query