gpt4 book ai didi

node.js - MongoDB 是否有一种方法可以更新文档而不删除更新数据中未包含的现有元素

转载 作者:太空宇宙 更新时间:2023-11-04 03:14:50 25 4
gpt4 key购买 nike

我一直在 .NET core 和 Node.js 中使用 MongoDB。这个问题特定于我正在从事的 Node 项目,但我认为客户端语言与我的问题无关。

我有一个文档,其中包含以下元素,例如名称和当前地址(“add_current”):

{
"_id" : ObjectId("5d858718c1d9f856881dc9ce"),
...
"name": "John Doe",
"add_current" :
{
"add1" : "456 Old Ave.",
"city" : "Stafford",
"state" : "VA",
"zip" : "23234"
},
...
}

有时我只是更新子对象的某些部分,如下所示:

const updateDocument2 = function (db, callback) {
const collection = db.collection('documents');
collection.update(
{
'_id': ObjectID("5d858718c1d9f856881dc9ce")
},
{
$set: {
name: "John Doe Jr.",
add_current: {
add1: "123 New Street",
}

}
}, function (err, result) {
console.log("Updated the document");
callback(result);
});
}

当我执行上面的$set时,我删除了城市、州和邮政编码字段。我不想那样做。

我正在寻找更新 name 和 add_current.add1 而不删除其他字段(如 add_current.state)的最有效方法。我意识到有多种方法可以通过多次触摸数据记录来实现此目的(.findOne(...) 然后 .update(...))。有没有办法通过一次 .update(...) 触摸来完成此操作?

最佳答案

您将 add_current 的值设置为 {add1: "123 New Street"}

尝试 {$set:{"add_current.add1": "123 新街"}}

关于node.js - MongoDB 是否有一种方法可以更新文档而不删除更新数据中未包含的现有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58081435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com