【问题标题】:How to update the values of a "Key-Value" pair in a nested array in MongoDB without adding a new element如何在不添加新元素的情况下更新 MongoDB 嵌套数组中“键值”对的值
【发布时间】:2018-11-27 05:27:39
【问题描述】:

我有以下数据:- **{

"_id" : ObjectId("5bf8048768d1e82d8bb4a477"),
"customer_code" : "c100003",

"vm_info" : [ 
    {

        "instanceId" : "i-0495d75742b839858",
        "tags" : [ 

            {
                "Key" : "SIDs",
                "Value" : "NWS"
            },  
            {
                "Key" : "OSTYPE",
                "Value" : "WINDOWS"
            },  
            {
                "Key" : "BACKUP_SERVER_LOCATION",
                "Value" : ""
            }, 
            {
                "Key" : "OS_VERSION",
                "Value" : "10"
            }
        ]
    },

    {
        "instanceId" : "i-017488cffca28cd70",
        "tags" : [ 

            {
                "Key" : "OS_VERSION",
                "Value" : "10"
            }, 

            {
                "Key" : "BACKUP_SERVER_LOCATION",
                "Value" : ""
            }, 


            {
                "Key" : "OSTYPE",
                "Value" : "WINDOWS"
            }, 
            {
                "Key" : "SIDs",
                "Value" : "NWS"
            }
       ]

    }, 

    {
        "instanceId" : "i-09d5db81657fe35d8",
        "tags" : [ 
            {
                "Key" : "SIDs",
                "Value" : "NWS"
            }, 
            {
                "Key" : "BACKUP_SERVER_LOCATION",
                "Value" : ""
            }, 
            {
                "Key" : "OSTYPE",
                "Value" : "WINDOWS"
            }, 
            {
                "Key" : "OS_VERSION",
                "Value" : "10"
            }

        ]
    }
]

}** 现在我想将“OS_VERSION”的值更新为“12”而不是“10”。更新后应该是这样的:- **{

"_id" : ObjectId("5bf8048768d1e82d8bb4a477"),
"customer_code" : "c100003",
"vm_info" : [ 
    {
        "instanceId" : "i-0495d75742b839858",
        "tags" : [ 

            {
                "Key" : "SIDs",
                "Value" : "NWS"
            }, 
            {
                "Key" : "OSTYPE",
                "Value" : "WINDOWS"
            }, 
            {
                "Key" : "BACKUP_SERVER_LOCATION",
                "Value" : ""
            },                               
            {
                "Key" : "OS_VERSION",
                "Value" : "12"
            }
        ]
    },

    {
        "instanceId" : "i-017488cffca28cd70",
        "tags" : [ 

            {
                "Key" : "OS_VERSION",
                "Value" : "10"
            }, 

            {
                "Key" : "BACKUP_SERVER_LOCATION",
                "Value" : ""
            }, 


            {
                "Key" : "OSTYPE",
                "Value" : "WINDOWS"
            }, 
            {
                "Key" : "SIDs",
                "Value" : "NWS"
            }
       ]

    }, 

    {
        "instanceId" : "i-09d5db81657fe35d8",
        "tags" : [ 
            {
                "Key" : "SIDs",
                "Value" : "NWS"
            }, 
            {
                "Key" : "BACKUP_SERVER_LOCATION",
                "Value" : ""
            }, 
            {
                "Key" : "OSTYPE",
                "Value" : "WINDOWS"
            }, 
            {
                "Key" : "OS_VERSION",
                "Value" : "10"
            }

        ]
    }
]

}**

当我使用带有“$addToSet”的更新运算符时,会添加一个新的键值对,而不是像这样更新现有数据: **{

"_id" : ObjectId("5bf8048768d1e82d8bb4a477"),
"customer_code" : "c100003",
"vm_info" : [ 
    {
        "instanceId" : "i-0495d75742b839858",
        "tags" : [ 

            {
                "Key" : "SIDs",
                "Value" : "NWS"
            }, 
            {
                "Key" : "OSTYPE",
                "Value" : "WINDOWS"
            }, 
            {
                "Key" : "BACKUP_SERVER_LOCATION",
                "Value" : ""
            }, 
            {
                "Key" : "OS_VERSION",
                "Value" : "10"
            },                              
            {
                "Key" : "OS_VERSION",
                "Value" : "12"
            }
        ]
    }
]

}** 我不希望它被添加为新元素,而应该只更新现有元素。 我怎样才能达到预期的结果。有人可以帮忙吗?

【问题讨论】:

  • 没什么不同。如果我只有一个实例 ID 和标签,这个想法可能会奏效。但我有 3 个与上述类似的实例 ID,每个实例 ID 都有一个标签。如何在我的数据的键值对中单独更新值。

标签: javascript arrays node.js json mongodb


【解决方案1】:

首先删除该键值对,然后插入新的。

【讨论】:

  • 如何动态地做到这一点兄弟 - harendra singh mahour
  • 发布一些示例数据文件
  • 你可以使用上面发布的数据兄弟
猜你喜欢
  • 2020-09-15
  • 1970-01-01
  • 2018-02-01
  • 2015-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-16
  • 2013-10-25
相关资源
最近更新 更多