首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

05 MongoDB对列的各种操作总结

  • 25-04-24 04:01
  • 2423
  • 7194
blog.csdn.net

基础篇(能解决工作中80%的问题):

  1. MongoDB的概述、应用场景、下载方式、连接方式和发展历史等

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

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

  4. MongoDB各种查询操作总结

  5. MongoDB对列的各种操作总结

  6. MongoDB中的索引操作总结

进阶篇:

  1. MongoDB聚合操作总结

  2. MongoDB的导入导出、备份恢复总结

  3. MongoDB的用户管理总结

  4. MongoDB复制(副本集)总结

  5. MongoDB 分片总结

  6. MongoDB 遇见 spark(进行整合)

  7. MongoDB内部的存储原理

其它:

  1. python3操作MongoDB的各种案例

  2. 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

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

数据知道的成长之路
微信公众号
成长进阶、技术分享、资源获取
注:本文转载自blog.csdn.net的数据知道的文章"https://blog.csdn.net/cui_yonghua/article/details/125450633"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top