• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    MongoDB快速入门笔记(六)之MongoDB的文档修改操作

    MongoDB

    MongoDB 是一个开源的文档数据库,并领先的 NoSQL 数据库。 MongoDB 是由 c++语言编写。

    文档

    文档是一组键 - 值对。文件动态模式。动态模式是指,在相同集合中的文档不需要具有相同的字段或结构组的公共字段的集合的文档,可以容纳不同类型的数据。

    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" : [ ] }

    您可能感兴趣的文章:
    • PHP库 查询Mongodb中的文档ID的方法
    • MongoDB中对文档的增删查改基本操作方法总结
    • MongoDB快速入门笔记(三)之MongoDB插入文档操作
    • MongoDB快速入门笔记(四)之MongoDB查询文档操作实例代码
    • MongoDB快速入门笔记(六)之MongoDB删除文档操作
    • MongoDB修改、删除文档的域属性实例
    • MongoDB学习笔记(四) 用MongoDB的文档结构描述数据关系
    • MongoDB插入、更新、删除文档实现代码
    上一篇:MongoDB快速入门笔记(六)之MongoDB删除文档操作
    下一篇:MongoDB快速入门笔记(四)之MongoDB查询文档操作实例代码
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    MongoDB快速入门笔记(六)之MongoDB的文档修改操作 MongoDB,快速,入门,笔记,六,