Я использую MongoDB как с ядром .NET, так и с Node.js.Этот вопрос относится к проекту узла, над которым я работаю, но я думаю, что язык клиента не имеет отношения к моим вопросам.
У меня есть документ, в котором есть такие элементы, как имя и текущий адрес (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
выше, я удаляю поля city, state и zip.Я не хочу этого делать.
Я ищу наиболее эффективный способ обновления имени и add_current.add1 без удаления других полей (например, add_current.state).Я понимаю, что есть способы сделать это несколькими прикосновениями к записи данных (.findOne(...)
, затем .update(...)
).Есть ли способ сделать это с помощью одного .update(...)
касания?