2015-09-30 127 views
0

我有以下查詢:蒙戈/貓鼬 - markModified不工作

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函數內部的文檔似乎已成功保存。然而,在別處查詢數據庫時,保存沒有發生。其試圖保存的對象像這樣是3深:

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

在每個數組內有幾個項目。

我不能使用Mongo將數據保存到嵌套數組對象?

回答

1

如果我明白你想要做什麼,那麼我認爲你想要使用的是Mongo Position Operator($)。這用於索引文檔中的嵌套數組。在你當前的代碼中,你只能引用數組中的第一個對象。使用位置操作符可以基於其他一些數據(如查詢)引用其他位置。

下面是操作的文檔:http://docs.mongodb.org/manual/reference/operator/update/positional/

這裏有另外一個堆棧溢出響應這可能有助於一點也: MongoDB $ operator