如何在mongodb的对象中更新我的另一个嵌套数组的嵌套数组

神话

我的问题与这个问题LINK有某种关系。然而这是我的问题..

{
    "_id": ObjectId("4d2d8deff4e6c1d71fc29a07"),
    "comments": [{
            "name": "Len",
            "_id": ObjectId("6241108375ed952ceb0187e3"),
            "data": [{
                "name":"Len",
                "confirmation_likes":"false",
                "_id":ObjectId("6241102d75ed952ceb0187dd")
             },{
                "name":"Lilipad",
                "confirmation_likes":"false",
                "_id":ObjectId("6241102d75ed952ceb0187da")
             }]
        } {
            "name": "Lilipad",
            "_id": ObjectId("6241108375ed952ceb0187e5"),
            "data": [{
                "name":"Len",
                "confirmation_likes":"false",
                "_id":ObjectId("6241102d75ed952ceb0187dd")
             },{
                "name":"Lilipad",
                "confirmation_likes":"false",
                "_id":ObjectId("6241102d75ed952ceb0187da")
             }]
        } {
            "name": "Leni Robredo",
            "_id": ObjectId("6241108375ed952ceb0187e9"),
            "data": [{
                "name":"Len",
                "confirmation_likes":"false",
                "_id":ObjectId("6241102d75ed952ceb0187dd")
             },{
                "name":"Lilipad",
                "confirmation_likes":"false",
                "_id":ObjectId("6241102d75ed952ceb0187da")
             }]
        }
        ...
    ]
}

现在,我想要在这里发生的是当您收到_id诸如ObjectId("6241108375ed952ceb0187e3"), ObjectId("6241108375ed952ceb0187e5"),之类的评论时ObjectId("6241108375ed952ceb0187e9")我想为他们每个人更新一组新数据,但我很困惑我将如何与操作员一起做。这就是我的输入和输出的工作方式。

parent_id = ObjectId("4d2d8deff4e6c1d71fc29a07")
sub_id = ObjectId("6241108375ed952ceb0187e5")
new_data = [{
                "name":"Len",
                "confirmation_likes":"false",
                "_id":ObjectId("6241102d75ed952ceb0187dd")
             },{
                "name":"Lilipad",
                "confirmation_likes":"false",
                "_id":ObjectId("6241102d75ed952ceb0187da")
             },{
                "name":"Len",
                "confirmation_likes":"false",
                "_id":ObjectId("6241102d75ed952ceb012131")
             }]

输出

{
    "_id": ObjectId("4d2d8deff4e6c1d71fc29a07"),
    "comments": [{
            "name": "Len",
            "_id": ObjectId("6241108375ed952ceb0187e3"),
            "data": [{
                "name":"Len",
                "confirmation_likes":"false",
                "_id":ObjectId("6241102d75ed952ceb0187dd")
             },{
                "name":"Lilipad",
                "confirmation_likes":"false",
                "_id":ObjectId("6241102d75ed952ceb0187da")
             }]
        } {
            "name": "Lilipad",
            "_id": ObjectId("6241108375ed952ceb0187e5"),
            "new_data": [{
                "name":"Len",
                "confirmation_likes":"false",
                "_id":ObjectId("6241102d75ed952ceb0187dd")
             },{
                "name":"Lilipad",
                "confirmation_likes":"false",
                "_id":ObjectId("6241102d75ed952ceb0187da")
             },{
                "name":"Len",
                "confirmation_likes":"false",
                "_id":ObjectId("6241102d75ed952ceb012131")
             }]
        } {
            "name": "Leni Robredo",
            "_id": ObjectId("6241108375ed952ceb0187e9"),
            "data": [{
                "name":"Len",
                "confirmation_likes":"false",
                "_id":ObjectId("6241102d75ed952ceb0187dd")
             },{
                "name":"Lilipad",
                "confirmation_likes":"false",
                "_id":ObjectId("6241102d75ed952ceb0187da")
             }]
        }
        ...
    ]
}

如您所见,我使用 sub_id 来获取要更新其数据的数组项的 id..因为我可以使用相同的名称但不能使用 id 所以这就是我使用 _id 的数组项的原因comments

现在,如果我想在评论数组的所有 id 中传递新的所有数据。我已经为此准备了一个循环,可以说这样的事情。

list_comment_id = [ObjectId("6241108375ed952ceb0187e3"),
ObjectId("6241108375ed952ceb0187e5"),ObjectId("6241108375ed952ceb0187e9")]

parent_id = ObjectId("4d2d8deff4e6c1d71fc29a07")
new_data = [{
                "name":"Len",
                "confirmation_likes":"false",
                "_id":ObjectId("6241102d75ed952ceb0187dd")
             },{
                "name":"Lilipad",
                "confirmation_likes":"false",
                "_id":ObjectId("6241102d75ed952ceb0187da")
             },{
                "name":"Len",
                "confirmation_likes":"false",
                "_id":ObjectId("6241102d75ed952ceb012131")
             }]

这样我就会传递我list_comment_id想要的所有数据..

我已经在我的代码中尝试过这样的事情

router.route('/append/:id').put((req,res) => {
    const { _id, sub_id, data} = req.body
    const main_id = req.params.id

    // Sub_id for comments _id items
    COMMENT.updateOne(
        {
            _id:main_id,
            "comments._id" : sub_id
        },
        {
            $set:{
                data:data
            }
        }
    ).then((comments) => res.json("Likes List People Updated") )
    .catch(err => console.log(err))

})

谁能帮帮我,谢谢??我会很高兴的。

R2D2

也许是这样的:

db.collection.update({
 _id: ObjectId("4d2d8deff4e6c1d71fc29a07")
},
{
$set: {
"comments.$[x]": {
  "name": "Lilipad",
  "_id": ObjectId("6241108375ed952ceb0187e5"),
  "new_data": [
    {
      "name": "Len",
      "confirmation_likes": "false",
      "_id": ObjectId("6241102d75ed952ceb0187dd")
    },
    {
      "name": "Lilipad",
      "confirmation_likes": "false",
      "_id": ObjectId("6241102d75ed952ceb0187da")
    },
    {
      "name": "Len",
      "confirmation_likes": "false",
      "_id": ObjectId("6241102d75ed952ceb012131")
    }
   ]
  }
 }
},
{
 arrayFilters: [
 {
    "x._id": ObjectId("6241108375ed952ceb0187e5")
 }
]
})

解释:创建 arrayFilters x 以识别需要更新的元素并使用必要的值进行更新。

操场

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在 MongoDB 中的另一个嵌套数组中更新嵌套数组中的对象

MongoDB-如何验证同一文档的另一个嵌套数组项中是否包含嵌套数组项?

Javascript / Typescript从另一个嵌套数组中的数据更新数据

如何根据另一个值在嵌套数组中查找值?

按 ID 在嵌套数组中查找单个记录并根据 MongoDB 中的另一个嵌套数组进行排序

如何检查一个 json 对象数组中的 id 是否存在于另一个 json 对象嵌套数组中?

如何在Redux状态的嵌套数组中仅更新一个值?

如何在嵌套数组中更新一个文档

更新mongo db文档中另一个数组内的嵌套数组字段

查找数组是否在另一个嵌套数组中

如何在MongoDB中更新嵌套数组中的数据

MongoDB:如何在嵌套数组中插入对象?

如何在mongodb中查询对象的嵌套数组?

如何在MongoDB中更新多层嵌套数组?

如何在mongoDB或Mongoose中更新嵌套数组的值

通过检查带有对象的另一个嵌套数组来过滤带有对象的嵌套数组-JavaScript

将嵌套数组类转换为另一个嵌套数组类 c#

更新数组mongodb中的嵌套数组

我想创建一个嵌套数组,它由另一个数组中的所有元素组成,但分为两个

删除基于另一个数组的嵌套数组

将嵌套数组与另一个数组进行比较

numpy索引嵌套数组,其中包含来自另一个数组的索引

使用另一个数组和PHP对嵌套数组进行排序

javascript循环嵌套数组并根据另一个数组提取属性

一个如何更新猫鼬模型嵌套数组中的数字

如何将特定索引的数组分配给另一个嵌套数组?

如何用另一个字符串数组过滤嵌套数组?

如何动态更新数组中另一个对象内的嵌套对象?

如何在嵌套数组中过滤JSON对象数组