我正在尝试更新嵌套文档中的特定值。假设键值对已经存在:
架构:
Child = mongoose.Schema({
key1 : String,
key2 : String,
Parent = mongoose.Schema({
sample:{
key1 : String,
key2 : [Child],
父文档可能包含多个嵌套文档,其中包含' parent.key2',假设我知道嵌套文档的特定_id值。我尝试过.save / .update / .findby ....的多种变体,但没有成功。
我现在正处于以下几点:
sample.update(
{_id : 'Known-ID-of-Nested-Document'},
{$set : {key1 : value}},
{upsert: true},
function(err){...}
以上不起作用 - 我做错了什么?
编辑:我使用了'findOneAndUpdate'像这样的方法:
var query = {<dataPath>._id : 'Known-ID-of-Nested-Document'}
var update = {<dataPath>.$.Key1 : 'newValue'}
var options = {upsert = true}
sample.findOneAndUpdate(query, update, options).......
我最初使用这种方法失败了,因为我的更新变量看起来像这样:
var query = {key1: 'newValue'}
原来我需要路径和$来查找嵌套文档,例如:
parent.child.$.<key-to-amend>
希望这可以帮助一路上的人。