zoukankan      html  css  js  c++  java
  • mongodb中内嵌数组的增删改查

    mongodb中数据结构如下:

    {
        "_id": ObjectId("5b447403e0c7343f8c7d934c"),
        "student": "张三",
        "Class_Array": [{
                "Class_id": ObjectId("5b4475404fec79358cb3a611"),
                "Class_Name": "语文",
                "Class_Teacher": "李四"
            },
            {
                "Class_id": ObjectId("5b4475404fec79358cb3a611"),
                "Class_Name": "数学",
                "Class_Teacher": "王五"
            }
        ]
    }

    1、数组库表中新加数据

    db.student.insert({
      "student": "张三",
        "Class_Array": [{
                "Class_id": ObjectId("5b4475404fec79358cb3a611"),
                "Class_Name": "语文",
                "Class_Teacher": "李四"
            },
      {
                "Class_id": ObjectId("5b4475404fec79358cb3a611"),
                "Class_Name": "数学",
                "Class_Teacher": "王五"
            }
    
        ]
    
    })

    2、更新class_array(往里面添加一个对象)

    db.student.update({ student: "张三"},{ $addToSet: {Class_Array:{ Class_Name: "英语", Class_Teacher: "王二"} }})

    注意:$addToSet为去重复添加(如果数据库中存在相同的插入对象,那么$addToSet将不会添加新的这个对象,改为$push即可添加成功)

    3、删除($pull)

    删除Class_Name为语文的这个对象

    db.student.update({ student: "张三",},{ $pull: {Class_Array:{  Class_id: ObjectId("5b4475404fec79358cb3a611"),Class_Name: "语文", Class_Teacher: "李四"} } })

    3、修改($set)

    db.student.update({ student: "张三",'Class_Array.Class_Name':'数学'},{ $set: {'Class_Array.$.Class_Name':'数学修改'} })

    注:$set操作符执行后,如果记录匹配到多条,用$只进行了第一个元素的更改,需要多条修改那么用$[],如果指定下标修改,那么把$修改为元素的下标即可,索引从0开始,update修改也只是修改匹配的第一条记录,如果要多条,使用updateMany()或者options设置为multi:true

  • 相关阅读:
    【jQuery 分页】jQuery分页功能的实现
    【jQuery 使用】 利用jQuery.prop("outerHTML")获取包含自身在内的HTML元素的HTML代码
    Openfire 是怎么存离线消息
    openfire过滤脏话插件,控制消息是否发送
    openfire升级指南
    openfire教程网
    redis web 客户端工具 redis-admin
    敏捷开发Nutz
    openfire消息通知推送
    一步步教你实现跨游览器的颜色选择器
  • 原文地址:https://www.cnblogs.com/KnowEditByW/p/9290593.html
Copyright © 2011-2022 走看看