• 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}}})

  • 相关阅读:
    使用正则表达式,取得点击次数,函数抽离
    爬取校园新闻首页的新闻
    网络爬虫基础练习
    综合练习:词频统计
    【Art】虹吸原理(5月份订正版)
    【失踪人口】准初三的JZSC
    【Mood】出大问题(最近很喜欢说这句话)
    【Matrix】矩阵加法&乘法
    【C++】stdio.h和cstdio
    【Theorem】中国剩余定理
  • 原文地址:https://www.cnblogs.com/ansheng/p/5442597.html
Copyright © 2020-2023  润新知