当前位置:网站首页>05 MongoDB对列的各种操作总结
05 MongoDB对列的各种操作总结
2022-06-28 03:22:00 【cui_yonghua】
目录:基础篇(能解决工作中80的问题)
01 MongoDB的概述、应用场景、下载方式、连接方式和发展历史等
02 MongoDB数据类型、重要概念以及shell常用指令
一. 修改列名
案例1: 修改age为 31 的列的address列的名称修改为address2,只会修改一条记录。
db.person.update({
age:31},{
$rename:{
address:'address2'}})
案例2: name为张三的address列的名修改为address2,会修改所有满足条件的记录。
db.person.update({
name:'张三'},{
$rename:{
address:'address2'}},{
multi:true})
二. 对列的增加或者删除操作
更新特定字段:
db.game.update({
"_id": 123}, {
"$set": {
"count": 10000}})
# 相当于sql中的
update game set count = 10000 where _id = 123;
删除特定字段:
db.game.update({
"_id":123}, {
"$unset": {
"author":1}})
案例1:增加列名为name的值是张三的列,只会增加一条。
db.person.update({
name:'张三'},{
$set:{
age:''}})
案例2:在集合中增加一列age, 默认为空, 该所有文档中都会增加该列:
db.person.update({
name:'张三'},{
$set:{
age:''}}, {
multi:true})
案例3:删除列名为name的值是张三的列,列名和列值都会删除,只会删除一条。
db.person.update({
name:'张三'},{
$unset:{
age:''}})
案例4:删除列名为name的值是张三的列,列名和列值都会删除,满足条件的都会删除。
db.person.update({
name:'张三'},{
$unset:{
age:''}},{
multi:true})
三. 某列字段的更新和插入操作
3.1 $inc: 进行递增或者递减
对应的字段必须是数字,而且递增或递减的值也必须是数字。
案例1:给某一列自增长 $inc ,_id 为1的记录,age 增加 1
# 每次age都加10
db.person.update({
_id:1},{
$inc: {
age:10}})
案例2:改变1条记录
db.person.update({
name:'张三'},{
$inc:{
age:10}})
案例3:改变所有满足条件的记录
db.person.update({
name:'张三'},{
$inc:{
age:10}},{
multi:ture})
3.2 数组追加
$push 进行数组追加,
案例1:追加一个元素
db.game.update({
"_id": 123}, {
"$push": {
"score": 123}})
案例2:追加多个元素
db.game.update({
"_id": 123}, {
"$push": {
"score": [12,123]}})
注:追加字段必须是数组。如果数组字段不存在,则自动新增,然后追加。
3.3 一次追加多个元素
$pushAll 一次追加多个元素
db.game.update({
"_id": 123}, {
"$pushAll": {
"score": [12,123]}})
3.4 追加不重复元素
$addToSet:追加不重复元素,类似集合Set,只有当这个值不在元素内时才增加:
db.game.update({
"_id": 123}, {
"$addToSet": {
"score": 123}})
3.5 其它字段操作
案例1:如果没有_id 为 4 的记录,则插入
db.person.update({
_id:4},{
$set: {
name:'李四',class:'三班',score:90}},{
upsert:true})
# 插入的数据结果
{
"_id" : 4, "name" : "李四", "class" : "三班", "score" : 90 }
案例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});
案例:如果没有更新行,插入额外的列:$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})
四. 删除元素
4.1 删除一个元素
$pop 删除元素, 每次只能删除数组中的一个元素,1表示删除最后一个,-1表示删除第一个。
# 删除最后一个元素
db.game.update({
"_id": 123}, {
"$pop": {
"score": 1}})
# 删除第一个元素
db.game.update({
"_id": 123}, {
"$pop": {
"score": -1}})
案例:删除特定元素
db.game.update({"_id": 123}, {"$pull": {"score": 123}})
4.2 删除特定元素
$pull 删除特定元素
# 删除数组score内值等于123的元素。
db.game.update({
"_id": 123}, {
"$pull": {
"score": 123}})
4.3 删除多个特定元素
$pullAll 删除特定元素
# 删除数组内值等于123或12的元素。
db.game.update({
"_id": 123}, {
"$pullAll": {
score: [123,12]}})
️ 如果觉得有用,感谢一键三连哦 !!!️
边栏推荐
猜你喜欢

数据库系列之MySQL和TiDB中慢日志分析

小程序image组件不显示图片?

黑體輻射初探

机器人编程教育的市场竞争力

Pychart shares third-party modules among different projects

How does the open-ended Hall current sensor help the transformation of DC power distribution?

Change of monitoring documents and folders of "operation and maintenance department"

leetcode:494.数组中添加加减运算符得到指定值的所有方法

Pycharm不同项目之间共用第三方模块

数据库系列之InnoDB中在线DDL实现机制
随机推荐
开关电源—Buck电路原理及其仿真
力扣每日一题-第29天-1491.去掉最低工资和最高工资后的平均工资
INFO:  HHH000397:  Using…
Supplementary questions of monthly competition
Extensible database (Part 2)
Documentation issues
Anaconda command usage
Typescript union type
STM32 peripheral SDIO and SD card configuration
机器人编程教育的市场竞争力
Circular sliding auto adsorption UI tool that monkeys can use
加法器—笔记
WARN:  SQL  Error: …
使用信号分析器
以自动化赋能转型,飞鹤乳业加速迈向数字化!
Understanding and learning of parental delegation mechanism
多项目开发入门,基础设计 类库项目使用
如何修改SE38编辑器主题
可扩展系统的“9不”原则和“5个”衡量维度
组件拆分实战