2016-07-07 64 views
0
"_id": { 
    "$oid": "577cc50d10b5a6c42b26f414" 
}, 
"firstName": "new", 
"lastName": "new", 
"__v": 0, 
"A": [ 
    { 
     "AfirstName": "AfirstName", 
     "AlastName": "AlastName", 
     "_id": { 
      "$oid": "577dbef2f2c9f5901f402efe" 
     }, 
     "AB": [ 
      { 
       "AB1firstName": "AB1firstName", 
       "AB1lastName": "AB1lastName", 
       "_id": { 
        "$oid": "577dd3b1495663ec2a6ca456" 
       } 
      }, 
      { 
       "AB2firstName": "AB2firstName", 
       "AB2lastName": "AB2lastName", 
       "_id": { 
        "$oid": "577dd3bc495663ec2a6ca45a" 
       } 
      } 
     ] 
    } 

] 
    Example.update({ _id: , A._id: , A.AB._id: } , 
{"$set": {"A.$.AB": data}}, 
function(err,model){ console.log(model); if (err) throw err; }) 

这将只是更新我想_id更新AB子文档的数据AB的第一个数据,也希望与_idmoongose嵌套子文档更新和删除

回答

2
Example.findById(_id,function(err,doc){ 
          var result = doc.A.id(AId).AB.id(AB.ABId); 
          result.AB1firstName="first Name"; 
          result.AB1lastName= "Last Name"; 
          doc.save(); 
         }); 
删除特定的嵌套子文档

这将更新

0

每个文档都有一个_id。 DocumentArrays有一个特殊的id方法用于通过其_id查找文档。

Example.findOne({ _id: id, A._id: Aid, A.AB._id: ABid}, 
      function(err,model){ 
      if (err) throw err; 
      var ABDoc model.A.id(Aid).AB.id(ABid); 
       ABDoc.AB2firstName="new value"; 
       ABDoc.AB2lastName="new value"; 
       model.save(); 
     })