zoukankan      html  css  js  c++  java
  • MongoDB快速入门学习笔记5 MongoDB的文档修改操作

    db.集合名称.update({query},{update},upsert, multi})
    query:过滤条件
    update:修改内容
    upsert:如果不存在查询条件查出的记录,是否插入一条数据,默认是false
    multi:是否只修改查询条件查出的第一条记录,默认是false

    > db.student.update({_id:1}, {name:"zhang"})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.student.find()
    { "_id" : 1, "name" : "zhang" }
    { "_id" : 2, "name" : "lisi", "age" : 27 }
    { "_id" : 3, "name" : "wangwu", "age" : 30 }
    { "_id" : 4, "name" : "zhaoliu", "age" : 28 }
    { "_id" : 5, "name" : "qianliu", "age" : 33 }
    { "_id" : 6, "name" : "sunba", "age" : 32 }

    把整条数据都修改了,如果修改内容中没有设置age字段,则以前的age也取消了,数据全部修改

    局部修改
    $set:如果存在键则修改,如果不存在键则添加

    > db.student.update({_id: 1},{$set:{name:"zhangsan", age: 26}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.student.find()
    { "_id" : 1, "name" : "zhangsan", "age" : 26 }
    { "_id" : 2, "name" : "lisi", "age" : 27 }
    { "_id" : 3, "name" : "wangwu", "age" : 30 }
    { "_id" : 4, "name" : "zhaoliu", "age" : 28 }
    { "_id" : 5, "name" : "qianliu", "age" : 33 }
    { "_id" : 6, "name" : "sunba", "age" : 32 }

    id重复时无法修改

    > db.student.update({_id:1},{_id:0, name:"zhangsanzhangsan"})
    WriteResult({
    "nMatched" : 0,
    "nUpserted" : 0,
    "nModified" : 0,
    "writeError" : {
    "code" : 16837,
    "errmsg" : "The _id field cannot be changed from {_id: 1.0} to {_id: 0.0}."
    }
    })
    > db.student.find()
    { "_id" : 1, "name" : "zhangsan", "age" : 26 }
    { "_id" : 2, "name" : "lisi", "age" : 27 }
    { "_id" : 3, "name" : "wangwu", "age" : 30 }
    { "_id" : 4, "name" : "zhaoliu", "age" : 28 }
    { "_id" : 5, "name" : "qianliu", "age" : 33 }
    { "_id" : 6, "name" : "sunba", "age" : 32 }


    第三个参数默认为false,如果查不到数据false时不执行任何操作,true时往数据库里新插入一条数据

    > db.student.update({_id:7},{_id:7, name: "songjiu", age:32})
    WriteResult({ "nMatched" : 0, "nUpserted" : 0, "nModified" : 0 })
    > db.student.update({_id:7},{_id:7, name: "songjiu"}, true)
    WriteResult({ "nMatched" : 0, "nUpserted" : 1, "nModified" : 0, "_id" : 7 })
    > db.student.find()
    { "_id" : 1, "name" : "zhangsan", "age" : 26 }
    { "_id" : 2, "name" : "lisi", "age" : 27 }
    { "_id" : 3, "name" : "wangwu", "age" : 30 }
    { "_id" : 4, "name" : "zhaoliu", "age" : 28 }
    { "_id" : 5, "name" : "qianliu", "age" : 33 }
    { "_id" : 6, "name" : "sunba", "age" : 32 }
    { "_id" : 7, "name" : "songjiu", "age" : 32 }


    第四个参数默认为false,false时表示只修改查询到的第一条数据,true时表示修改查询到的所有数据

    > db.student.update({age:32}, {$set:{age:33}}, false, false)
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.student.find()
    { "_id" : 1, "name" : "zhangsan", "age" : 26 }
    { "_id" : 2, "name" : "lisi", "age" : 27 }
    { "_id" : 3, "name" : "wangwu", "age" : 30 }
    { "_id" : 4, "name" : "zhaoliu", "age" : 28 }
    { "_id" : 5, "name" : "qianliu", "age" : 33 }
    { "_id" : 6, "name" : "sunba", "age" : 33 }
    { "_id" : 7, "name" : "songjiu", "age" : 32 }
    > db.student.update({age:33}, {$set:{age:32}}, false, true)
    WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })
    > db.student.find()
    { "_id" : 1, "name" : "zhangsan", "age" : 26 }
    { "_id" : 2, "name" : "lisi", "age" : 27 }
    { "_id" : 3, "name" : "wangwu", "age" : 30 }
    { "_id" : 4, "name" : "zhaoliu", "age" : 28 }
    { "_id" : 5, "name" : "qianliu", "age" : 32 }
    { "_id" : 6, "name" : "sunba", "age" : 32 }
    { "_id" : 7, "name" : "songjiu", "age" : 32 }
    > db.student.update({age:32}, {$set:{age:33}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.student.find()
    { "_id" : 1, "name" : "zhangsan", "age" : 26 }
    { "_id" : 2, "name" : "lisi", "age" : 27 }
    { "_id" : 3, "name" : "wangwu", "age" : 30 }
    { "_id" : 4, "name" : "zhaoliu", "age" : 28 }
    { "_id" : 5, "name" : "qianliu", "age" : 33 }
    { "_id" : 6, "name" : "sunba", "age" : 32 }
    { "_id" : 7, "name" : "songjiu", "age" : 32 }


    $inc:在原来的基础上加多少

    > db.student.update({_id:7}, {$inc:{age:-1}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.student.find()
    { "_id" : 1, "name" : "zhangsan", "age" : 26 }
    { "_id" : 2, "name" : "lisi", "age" : 27 }
    { "_id" : 3, "name" : "wangwu", "age" : 30 }
    { "_id" : 4, "name" : "zhaoliu", "age" : 28 }
    { "_id" : 5, "name" : "qianliu", "age" : 33 }
    { "_id" : 6, "name" : "sunba", "age" : 32 }
    { "_id" : 7, "name" : "songjiu", "age" : 31 }

    $unset:去掉某个键

    > db.student.update({_id:7},{$unset:{age:1}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.student.find()
    { "_id" : 1, "name" : "zhangsan", "age" : 26 }
    { "_id" : 2, "name" : "lisi", "age" : 27 }
    { "_id" : 3, "name" : "wangwu", "age" : 30 }
    { "_id" : 4, "name" : "zhaoliu", "age" : 28 }
    { "_id" : 5, "name" : "qianliu", "age" : 33 }
    { "_id" : 6, "name" : "sunba", "age" : 32 }
    { "_id" : 7, "name" : "songjiu" }

    针对数组类型的操作

    $push:当数据中不存在键时,创建数组类型的键并插入该值;如果存在该键,并且该键是数组类型时,则在此数组类型的数据上追加;如果存在该键,并且该键不是数组类型时,会报错。
    $pushAll:批量往数组中追加
    $addToSet:数组中有该值时不追加,没有该值时追加

    > db.student.update({_id: 7},{$push:{skill:"java"}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.student.find()
    { "_id" : 1, "name" : "zhangsan", "age" : 26 }
    { "_id" : 2, "name" : "lisi", "age" : 27 }
    { "_id" : 3, "name" : "wangwu", "age" : 30 }
    { "_id" : 4, "name" : "zhaoliu", "age" : 28 }
    { "_id" : 5, "name" : "qianliu", "age" : 33 }
    { "_id" : 6, "name" : "sunba", "age" : 32 }
    { "_id" : 7, "name" : "songjiu", "skill" : [ "java" ] }
    > db.student.update({_id: 7},{$push:{skill:"mongodb"}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.student.find()
    { "_id" : 1, "name" : "zhangsan", "age" : 26 }
    { "_id" : 2, "name" : "lisi", "age" : 27 }
    { "_id" : 3, "name" : "wangwu", "age" : 30 }
    { "_id" : 4, "name" : "zhaoliu", "age" : 28 }
    { "_id" : 5, "name" : "qianliu", "age" : 33 }
    { "_id" : 6, "name" : "sunba", "age" : 32 }
    { "_id" : 7, "name" : "songjiu", "skill" : [ "java", "mongodb" ] }
    > db.student.update({_id: 7},{$push:{name:"111"}})
    WriteResult({
    "nMatched" : 0,
    "nUpserted" : 0,
    "nModified" : 0,
    "writeError" : {
    "code" : 16837,
    "errmsg" : "The field 'name' must be an array but is of type String in document {_id: 7.0}"
    }
    })
    > db.student.update({_id: 7},{$pushAll:{skill:["js","C++","java"]}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.student.find()
    { "_id" : 1, "name" : "zhangsan", "age" : 26 }
    { "_id" : 2, "name" : "lisi", "age" : 27 }
    { "_id" : 3, "name" : "wangwu", "age" : 30 }
    { "_id" : 4, "name" : "zhaoliu", "age" : 28 }
    { "_id" : 5, "name" : "qianliu", "age" : 33 }
    { "_id" : 6, "name" : "sunba", "age" : 32 }
    { "_id" : 7, "name" : "songjiu", "skill" : [ "java", "mongodb", "js", "C++", "java" ] }
    > db.student.update({_id:7},{$addToSet:{skill:"mongodb"}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })
    > db.student.find()
    { "_id" : 1, "name" : "zhangsan", "age" : 26 }
    { "_id" : 2, "name" : "lisi", "age" : 27 }
    { "_id" : 3, "name" : "wangwu", "age" : 30 }
    { "_id" : 4, "name" : "zhaoliu", "age" : 28 }
    { "_id" : 5, "name" : "qianliu", "age" : 33 }
    { "_id" : 6, "name" : "sunba", "age" : 32 }
    { "_id" : 7, "name" : "songjiu", "skill" : [ "java", "mongodb", "js", "C++", "java" ] }


    $pop:删除数组的第一个或最后一个元素,值为-1时是删除第一个元素,值为1时是删除最后一个元素。
    $pull:删除数组中的某一个指定的数值
    $pullAll:删除数组中多个指定的数值

    > db.student.update({_id:7},{$pop:{skill:1}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.student.find()
    { "_id" : 1, "name" : "zhangsan", "age" : 26 }
    { "_id" : 2, "name" : "lisi", "age" : 27 }
    { "_id" : 3, "name" : "wangwu", "age" : 30 }
    { "_id" : 4, "name" : "zhaoliu", "age" : 28 }
    { "_id" : 5, "name" : "qianliu", "age" : 33 }
    { "_id" : 6, "name" : "sunba", "age" : 32 }
    { "_id" : 7, "name" : "songjiu", "skill" : [ "java", "mongodb", "js", "C++" ] }
    > db.student.update({_id:7},{$pop:{skill:-1}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.student.find()
    { "_id" : 1, "name" : "zhangsan", "age" : 26 }
    { "_id" : 2, "name" : "lisi", "age" : 27 }
    { "_id" : 3, "name" : "wangwu", "age" : 30 }
    { "_id" : 4, "name" : "zhaoliu", "age" : 28 }
    { "_id" : 5, "name" : "qianliu", "age" : 33 }
    { "_id" : 6, "name" : "sunba", "age" : 32 }
    { "_id" : 7, "name" : "songjiu", "skill" : [ "mongodb", "js", "C++" ] }
    > db.student.update({_id:7},{$pull:{skill:"js"}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.student.find()
    { "_id" : 1, "name" : "zhangsan", "age" : 26 }
    { "_id" : 2, "name" : "lisi", "age" : 27 }
    { "_id" : 3, "name" : "wangwu", "age" : 30 }
    { "_id" : 4, "name" : "zhaoliu", "age" : 28 }
    { "_id" : 5, "name" : "qianliu", "age" : 33 }
    { "_id" : 6, "name" : "sunba", "age" : 32 }
    { "_id" : 7, "name" : "songjiu", "skill" : [ "mongodb", "C++" ] }
    > db.student.update({_id:7},{$pullAll:{skill:["js"]}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })
    > db.student.find()
    { "_id" : 1, "name" : "zhangsan", "age" : 26 }
    { "_id" : 2, "name" : "lisi", "age" : 27 }
    { "_id" : 3, "name" : "wangwu", "age" : 30 }
    { "_id" : 4, "name" : "zhaoliu", "age" : 28 }
    { "_id" : 5, "name" : "qianliu", "age" : 33 }
    { "_id" : 6, "name" : "sunba", "age" : 32 }
    { "_id" : 7, "name" : "songjiu", "skill" : [ "mongodb", "C++" ] }
    > db.student.update({_id:7},{$pullAll:{skill:["mongodb","C++"]}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.student.find()
    { "_id" : 1, "name" : "zhangsan", "age" : 26 }
    { "_id" : 2, "name" : "lisi", "age" : 27 }
    { "_id" : 3, "name" : "wangwu", "age" : 30 }
    { "_id" : 4, "name" : "zhaoliu", "age" : 28 }
    { "_id" : 5, "name" : "qianliu", "age" : 33 }
    { "_id" : 6, "name" : "sunba", "age" : 32 }
    { "_id" : 7, "name" : "songjiu", "skill" : [ ] }
  • 相关阅读:
    阿里云CentOS安装firefox闪退
    error: QApplication: No such file or directory
    CentOS下自动登陆root帐户
    Linux下常用软件
    【记录】haphost免费vps初始配置
    检测Linux VPS是Xen、OpenVZ还是KVM真假方法
    使用VNC远程管理VPS(Centos系统)
    配置suricata
    NGUI的输入框制作(attach- input filed script的使用)
    NGUI技能CD效果制作(sprite的type:filled)
  • 原文地址:https://www.cnblogs.com/zhangyanhu/p/5543906.html
Copyright © 2011-2022 走看看