Mongo对内嵌文档的CRUD
{ "_id" : ObjectId("5706032acd0a6194868cf53e"), "list" : { "age" : 22.0, "name" : "qiaoansheng" }, "BookS" : [{ "bookName" : "在绝望中寻找希望" }] }
现在数据库中有这么一个文档,下面就是对他进行一系列的增删改查
增
我需要在list中再加一个key school
db.ansheng.update({"_id":ObjectId("5706032acd0a6194868cf53e")},{"$set":{"list.school":"驻马店第一高级中学"}})
执行完成后结果如下
{ "_id" : ObjectId("5706032acd0a6194868cf53e"), "list" : { "age" : 22.0, "name" : "qiaoansheng", "school" : "驻马店第一高级中学" }, "BookS" : [{ "bookName" : "在绝望中寻找希望" }] }
删
改
{ "_id" : ObjectId("5706032acd0a6194868cf53e"), "list" : [{ "age" : 13.0, "name" : "张三", "school" : "驻马店市第一小学" }, { "bookName" : "在绝望中寻找希望", "money" : 188.0 }, { "age" : 23.0, "name" : "隔壁老王", "cshool" : "家里蹲大学" }], "BookS" : [{ "bookName" : "在绝望中寻找希望" }], "aaaaa" : 20.0 }
现在有上面的这一个文档,对list中的数据进行一些列的修改
$inc 可以用来修改 值类型的数据,不能修改长字符串类型的数据
db.ansheng.update({"aaaaa":20},{"$inc":{"list.0.age":2}})
db.【对应的表】.update(【查询参数】,{"$inc":{"list.【这个集合的下标】.【需要修改的字段名称】":2}})
根据 name 修改 隔壁老王 的年龄
db.ansheng.update({"list.name":"隔壁老王"},{"$inc":{"list.$.age":100}})
这种方法只会修改第一个匹配到的数据,如果这个集合中还有一个 隔壁老王 则它的age是不会修改的
查
db.nqwd.find({"books.name":"语文"})//可以匹配到内嵌文档中 包含语文的所有数据
当我需要找到 name为语文并且money为200的数据
db.nqwd.find({"books.name":"语文","books.money":200})或者
db.nqwd.find({books:{"$elemMatch":{name:"语文",money:200}}})