假如说我们这个集合里面的文档都是这种格式:


{ "_id" : ObjectId("5c177b84f4e84940e0bd578d"), "name" : "suhaozhi", "pwd" : "suhaozhi", "phone" : [ { "phone_num" : "13333333333", "type" : "cmcc" }, { "phone_num" : 15555555555, "type" : "chinanet" } ], "type" : "chinanet" }



现在需要搜索出phone字段中type子字段的值为CMCC的记录:


db.tmp.find({phone:{$elemMatch:{cs:"cmcc"}}});




如果要修改掉上面这个文档phone字段中phone_num 13333333333 对应的 type字段 chinanet


db.tmp.update({"name":"suhaozhi","phone.phone_num":"13333333333"},{$set:{"phone.$.cs":"chinanet"}});



如果想在内嵌文档中,再插入一条数据:

db.tmp.update({"name":"suhaozhi"},{$push:{phone:{"phone_num" : "23333", "type" : "cmcc"}}})


从内嵌文档中删除一条数据: