Mongoose:如何正确更新嵌套文档

时间:2014-04-09 14:07:58

标签: mongodb mongoose

我正在尝试更新嵌套文档中的特定值。假设键值对已经存在:

架构:

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>

希望这可以帮助一路上的人。

0 个答案:

没有答案