zoukankan      html  css  js  c++  java
  • 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" : "在绝望中寻找希望"
        }]
    }
    View Code

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

  • 相关阅读:
    svn命令行使用积累
    linux下编译出现tmp空间不足解决办法
    secure CRT the remote system refused the connection 解决办法
    Makefile 中符合的使用
    函数指针作为某个函数的参数及定义函数指针(回调函数)
    C语言指针变量作为函数参数
    虚拟机下安装ubuntu后root密码登录失败的问题
    管理者需要知道的十大经典理论
    System V 与 POSIX
    带你吃透RTMP
  • 原文地址:https://www.cnblogs.com/ansheng/p/5442597.html
Copyright © 2011-2022 走看看