• 05 MongoDB对列的各种操作总结


    目录:基础篇(能解决工作中80的问题)
    01 MongoDB的概述、应用场景、下载方式、连接方式和发展历史等

    02 MongoDB数据类型、重要概念以及shell常用指令

    03 MongoDB文档的各种增加、更新、删除操作总结

    04 MongoDB各种查询操作 以及聚合操作总结

    05 MongoDB对列的各种操作总结

    python3操作MongoDB的各种案例

    一. 修改列名

    案例1: 修改age为 31 的列的address列的名称修改为address2,只会修改一条记录。

    db.person.update({age:31},{$rename:{address:'address2'}})
    
    • 1

    案例2: name为张三的address列的名修改为address2,会修改所有满足条件的记录。

    db.person.update({name:'张三'},{$rename:{address:'address2'}},{multi:true})
    
    • 1

    二. 对列的增加或者删除操作

    更新特定字段:

    db.game.update({"_id": 123}, { "$set": {"count": 10000}})
    
    # 相当于sql中的
    update game set count = 10000 where _id = 123;
    
    • 1
    • 2
    • 3
    • 4

    删除特定字段:

    db.game.update({"_id":123}, {"$unset": {"author":1}})
    
    • 1

    案例1:增加列名为name的值是张三的列,只会增加一条。

    db.person.update({name:'张三'},{$set:{age:''}}) 
    
    • 1

    案例2:在集合中增加一列age, 默认为空, 该所有文档中都会增加该列:

    db.person.update({name:'张三'},{$set:{age:''}}, {multi:true}) 
    
    • 1

    案例3:删除列名为name的值是张三的列,列名和列值都会删除,只会删除一条。

    db.person.update({name:'张三'},{$unset:{age:''}})
    
    • 1

    案例4:删除列名为name的值是张三的列,列名和列值都会删除,满足条件的都会删除。

    db.person.update({name:'张三'},{$unset:{age:''}},{multi:true})
    
    • 1

    三. 某列字段的更新和插入操作

    3.1 $inc: 进行递增或者递减

    对应的字段必须是数字,而且递增或递减的值也必须是数字。

    案例1:给某一列自增长 $inc ,_id 为1的记录,age 增加 1

    # 每次age都加10
    db.person.update({_id:1},{$inc: {age:10}})   
    
    • 1
    • 2

    案例2:改变1条记录

    db.person.update({name:'张三'},{$inc:{age:10}})
    
    • 1

    案例3:改变所有满足条件的记录

    db.person.update({name:'张三'},{$inc:{age:10}},{multi:ture})
    
    • 1

    3.2 数组追加

    $push 进行数组追加,

    案例1:追加一个元素

    db.game.update({"_id": 123}, { "$push": {"score": 123}})
    
    • 1

    案例2:追加多个元素

    db.game.update({"_id": 123}, {"$push": {"score": [12,123]}})
    
    • 1

    注:追加字段必须是数组。如果数组字段不存在,则自动新增,然后追加。

    3.3 一次追加多个元素

    $pushAll 一次追加多个元素

    db.game.update({"_id": 123}, {"$pushAll": {"score": [12,123]}})
    
    • 1

    3.4 追加不重复元素

    $addToSet:追加不重复元素,类似集合Set,只有当这个值不在元素内时才增加:

    db.game.update({"_id": 123}, {"$addToSet": {"score": 123}})
    
    • 1

    3.5 其它字段操作

    案例1:如果没有_id 为 4 的记录,则插入

    db.person.update({_id:4},{$set: {name:'李四',class:'三班',score:90}},{upsert:true})
    
    # 插入的数据结果
    { "_id" : 4, "name" : "李四", "class" : "三班", "score" : 90 }
    
    • 1
    • 2
    • 3
    • 4

    案例2:如果没有更新行,插入额外的列:$setOnInsert,upsert:true

    db.person.update({_id:5},{$setOnInsert:{name:'王五',like:'football'}},{upsert:true})
    
    # 执行后,数据库中多出如下记录:
    { "_id" : 5, "like" : "football", "name" : "王五" }
    
    # 假如数据库中有_id 为 5 的记录,执行以下的语句,不会有任何影响,不会新增,也不会修改。
    db.person.update({_id:5},{$setOnInsert:{name:'王五',like:'football',height:178}},{upsert:true});
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    案例:如果没有更新行,插入额外的列:$setOnInsert,upsert:true

    db.person.update({_id:5},{$setOnInsert:{name:'王五',like:'football'}},{upsert:true})
    
    # 假如有_id 为5的记录,执行以下的语句,不会有任何影响,不会新增也不会修改
    db.person.update({_id:5},{$setOnInsert:{name:'王五',like:'football',height:178}},{upsert:true})
    
    • 1
    • 2
    • 3
    • 4

    四. 删除元素

    4.1 删除一个元素

    $pop 删除元素, 每次只能删除数组中的一个元素,1表示删除最后一个,-1表示删除第一个。

    # 删除最后一个元素
    db.game.update({"_id": 123}, {"$pop": {"score": 1}})
    
    # 删除第一个元素
    db.game.update({"_id": 123}, {"$pop": {"score": -1}})
    
    • 1
    • 2
    • 3
    • 4
    • 5

    案例:删除特定元素

    db.game.update({"_id": 123}, {"$pull": {"score": 123}})
    
    • 1

    4.2 删除特定元素

    $pull 删除特定元素

    # 删除数组score内值等于123的元素。
    db.game.update({"_id": 123}, {"$pull": {"score": 123}})
    
    • 1
    • 2

    4.3 删除多个特定元素

    $pullAll 删除特定元素

    # 删除数组内值等于123或12的元素。
    db.game.update({"_id": 123}, {"$pullAll": {score: [123,12]}})
    
    • 1
    • 2

    ❤️ 如果觉得有用,感谢一键三连哦 !!!❤️

  • 相关阅读:
    详解欧拉计划第220题:海韦龙形曲线
    Twitter正在测试年度订阅以进行推文和转推
    论文详读《基于改进 LeNet-5 模型的手写体中文识别》,未完待补充
    ssh终端工具推荐-WindTerm
    华为交换机配置ssh登录远程管理交换机
    【机器学习-周志华】学习笔记-第七章
    面试百问:项目上线后才发现bug怎么办?
    6.5 - 万维网
    AM@无穷小和无穷大
    「MySQL」MySQL面试题全解析:常见问题与高级技巧详解
  • 原文地址:https://blog.csdn.net/cui_yonghua/article/details/125450633