【问题标题】:update deeply nested array mongodb更新深层嵌套数组 mongodb
【发布时间】:2020-05-27 20:37:03
【问题描述】:

我想使用 mongodb 在附件数组中推送一个值。我想使用以下条件更新查询。

_id:ObjectId("5b56bd2f3e18580edc85af73") "cardID": ObjectId("5b56c895d0a04836f71aa776") "commentId":"2"

我想在附件中推送价值,任何帮助将不胜感激

这是一个集合对象:

{
            "_id" : ObjectId("5b56bd2f3e18580edc85af73"),
            "orgId" : "90",
            "createdBy" : "test",
            "name" : "testname",
            "Cards" : [ 
                {
                    "cardID" : ObjectId("5b56c895d0a04836f71aa776"),
                    "cardName" : "test Name",
                    "cardCreated" : "",
                    "reviewer" : "",
                    "priority" : "",
                    "cardPosition" : "",
                    "membersAssigned" : [ 
                        "ggg", 
                        "fff"
                    ],
                    "labels" : [ 
                        "l1", 
                        "l2"
                    ],
                    "description" : "",
                    "attachements" : [],
                    "comments" : [ 
                        {
                            "commentId" : "2",
                            "commentedBy" : "test",
                            "date" : "",
                            "comment" : "Hello world",
                            "attachements" : [   
                                "1", 
                                "data"
                            ],
                            "emojis" : [ 
                                ":smile:", 
                                ":thumbsup:"
                            ],
                            "updatedBy" : "arkadata",
                            "updatedOn" : "",
                            "subComments" : {
                                "commentedBy" : "jaril",
                                "date" : "",
                                "comment" : "Hello world inside dark"
                            }
                        }, 
                        {
                            "commentId" : "3",
                            "commentedBy" : "test",
                            "date" : "",
                            "comment" : "Hello world",
                            "attachements" : [ 
                               "1",
                               "raj"
                            ],
                            "emojis" : [ 
                                ":smile:", 
                                ":thumbsup:"
                            ],
                            "updatedBy" : "arkadata",
                            "updatedOn" : "",
                            "subComments" : {
                                "commentedBy" : "jaril",
                                "date" : "",
                                "comment" : "Hello world inside dark"
                            }
                        }, 
                        {
                            "commentId" : 6.0
                        }
                    ],
                    "dueDate" : "",
                    "createdDate" : "",
                    "lastUpdated" : "",
                    "checkList" : [],
                    "position" : "5",
                    "status" : "active"
                },
            "timestamp" : ISODate("2018-07-24T05:46:23.890Z")
        }

【问题讨论】:

    标签: arrays mongodb


    【解决方案1】:

    你可以试试 mongodb 3.6 arrayFilters

    db.collection.update(
      { "_id": ObjectId(5b56bd2f3e18580edc85af73) },
      { "$push": { "Cards.$[card].comments.$[comment].attachments": "2" } },
      { "arrayFilters": { "card.cardID": ObjectId("5b56c895d0a04836f71aa776"), "comment.commentId": 2 } }
    )
    

    确保将您的 id 转换为 ObjectId

    编辑:

    db.collection.update(
      { "_id": ObjectId(5b56bd2f3e18580edc85af73) },
      { "$push": { "Cards.$[card].comments.$[comment].attachments": "2" } },
      { "arrayFilters": [
        { "card.cardID": ObjectId("5b56c895d0a04836f71aa776")},
        {"comment.commentId": 2 }
        ]
      }
    )
    

    【讨论】:

      猜你喜欢
      • 2019-01-13
      • 1970-01-01
      • 2019-02-17
      • 2018-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-10
      • 2020-10-22
      相关资源
      最近更新 更多