moongose嵌套子文档更新和删除

时间:2016-07-07 05:20:15

标签: node.js mongoose nested mongoose-schema subdocument

"_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;  })

这只会更新AB的第一个数据我希望通过_id更新AB子文档的数据,并且还希望使用_id删除特定的嵌套子文档

2 个答案:

答案 0 :(得分:2)

Util

这将更新

答案 1 :(得分: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();
        })
相关问题