MongoDB增删改查操作命令行

MongoDB增删改查操作(命令行)

一、插入

MongoDB的插入操作很简单,使用insert方法,这里演示从创建数据库、创建集合到插入文档、查询文档。

IMG_256

集合创建方法参数说明:

size:集合最大空间

max:集合最多文档数量

(超出size和max限制都会删除最早的记录)

 

二、删除

MongoDB删除操作也很简单,使用remove方法,这里演示删除刚刚插入的文档。

IMG_257

remove函数如果没有传参数,直接调用则是删除集合中所有文档。

 

三、更新

这里事先在刚刚创建的‘blog’集合中插入了4个文档:

IMG_258

1. 替换整个文档(这里演示替换第一个文档):

IMG_259

(这种情况下_id不变,若是要更新_id请注意防止键冲突)

2. 使用修改器更新文档指定部分:

(1)$inc:数字增加/减少

IMG_260

(若对应键不存在则会先创建键,若键对应值不是数字则会报错)

(2)$set:设置键值

IMG_261

(可以操作多种数据类型,可以改变键值的数据类型,还可以用于修改内嵌文档,若对应键不存在则会先创建键)

(3)$unset:删除某个键

IMG_262

(4)$push:若对应键已存在则会向已有数组末尾加入一个元素,否则会创建一个新的数组。

IMG_263

(5)$addToSet:如果一个值不在数组里面就把它加进去,使用方法和$push一样,只是不能添加重复的元素。

将$addToSet和$each组合起来,可以一次向数组中添加多个不同的值。

IMG_264

(6)$pop:从数组任何一端删除一个元素。

IMG_265

(貌似负数都是从头部删除,0和正数都从末尾删除)

(7)$pull:删除数组中所有符合条件的元素。

IMG_266

(8)使用数组下标选择需要修改的数组元素:

IMG_267

(9)使用定位符选择需要修改的数组元素:

IMG_268

修改器速度:

$inc不需要改变文档大小,所以速度非常快。

数组修改器可能更改了文档大小,速度比较慢。

$set在文档大小不发生变化时速度比较快,否则性能也会有所下降。

MongoDB预留了些补白给文档来适应大小变化,但要是超出了原来的空间,还是要分配一块新的空间。

要是$push成为瓶颈,可以将内嵌数组独立出来,放到单独一个集合里面。

3. upsert:

如果存在符合条件的文档则更新,否则以匹配条件和更新文档为基础插入文档。

将update()函数的第三个参数设置为true即可。

IMG_269

4. save:shell函数,文档不存在时插入,存在时更新。

函数参数为一个文档,若文档存在‘_id’键则调用upsert,否则调用insert。

IMG_270

5. 更新多个文档:

默认情况下,更新只能对符合匹配条件的第一个文档执行操作,要使所有匹配到的文档都得到更新,

可以设置update()函数的第4个参数为true。(这个行为今后可能会被更改)

若想知道到底更新了多少文档,可以运行命令:

db.runCommand({getLastError:1})

打印出来的结果中“n”对应的数值就是被更新的文档的数量。

IMG_271

 

四、查询

1.一般条件查询:

IMG_273

(_id键总是会被返回,除非显式将其剔除)

查询条件表示符:

$lt(<)、$lte(<=)、$gt(>)、$gte(>=)、$ne(<>)

2. OR查询:

OR查询有两种方式:$in、$or,$in只能对单个键做or查询,如需要对多个键做or查询应该使用$or。$in对应的还有$nin。

IMG_274

3. $mod:将查询的值除以第一个给定值,若余数等于第二个给定值则返回该文档。

IMG_275

4. $not:元条件句,可以用在任何其他条件之上。

IMG_276

5. null值查询:

IMG_277

db.blog.find({‘haha’: {$type : 10}})

$type为10表示Null

6. 正则表达式查询:

IMG_278

不区分大小写:db.blog.find({'content':/mongodb/i})

7. 数组查询:

(1)$all:通过多个元素来匹配数组(元素顺序无关)

IMG_279

(2)$size:根据数组长度查询。

IMG_280

posted @ 2023-04-24 10:56  XU-NING  阅读(140)  评论(0编辑  收藏  举报