mongodb中的arrayFilters [英] arrayFilters in mongodb

查看:586
本文介绍了mongodb中的arrayFilters的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下架构.

{
   posts: [
          {
             _id: '5ayuunbdsyuuuyut778'
             replies: [{
                 _id: "67hfudj7e9whduu888",
                 text: "something"
             }]
          }
      ]
}

我想更新特别答复中的文字. 我在用猫鼬.

I want to update the text in particular reply. I am using mongoose.

我写的查询如下

Post.findOneAndUpdate(
   {'posts.replies._id': _id}, 
   {$set: {'posts.$[post].replies.$[reply].text': "something1"}},
   { arrayFilters: [{'post._id': postId}, { 'reply._id': _id }]}
 )

此查询不会更新文档.

我错过了什么吗?我是否需要使用ObjectId投射ID

Am I missing something? Do I need to cast ids using ObjectId

推荐答案

您需要使用new: true来获取更新后的值,并将id强制转换为mongoose objectId才能使其正常工作

You need to use new: true to get the updated value and cast id to mongoose objectId to make it work

Post.findOneAndUpdate(
   { 'posts.replies._id': _id }, 
   { $set: { 'posts.$[post].replies.$[reply].text': "something1" } },
   { arrayFilters: [{ 'post._id': postId }, { 'reply._id': _id }], new: true }
)

这篇关于mongodb中的arrayFilters的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆