Mongo / Mongoose - markModified不工作

时间:2015-09-30 18:12:26

标签: javascript node.js mongodb mongoose

我有以下查询:

  Section.find({"clause": sub.section}, function(err, docs){
    var detail = parseInt(sub.detail);
    docs[0].subClauses[0].additionalDetails[detail-1].percentile = sub.percentile;
    docs[0].markModified("subClauses");
    docs[0].save(function(err, doc){
      if(err) { return callback(err) }; 
      callback();
    })
  })

当我在.save函数中记录doc时,它似乎已成功保存。但是,在其他地方查询数据库时,保存尚未发生。它试图保存的对象是这样的深度:

[
  {
  "clause": "1",
  "subClauses: 
   [
     {
     "clause":"1.1",
     "additionalDetails:
      [
        {
        "detail": "1",
        "content": "whatever" 
        }
      ]
    }
  ]  
 }
]

每个数组中有几个项目。

我是否无法使用Mongo将数据保存到嵌套数组对象?

1 个答案:

答案 0 :(得分:1)

如果我理解你要做什么,那么我认为你想要使用的是Mongo Position Operator($)。这用于索引文档中的嵌套数组。在当前代码中,您只引用数组中的第一个对象。使用位置运算符,您将能够基于某些其他数据(例如查询)引用其他位置。

以下是运营商的文档:http://docs.mongodb.org/manual/reference/operator/update/positional/

这是另一个Stack Overflow响应,它可能有点帮助: MongoDB $ operator