MongoDB学习(三)-- 增删改

文章目录


1、数据库database

1.1 创建库

//有则使用这个数据库,没有就创建
use DATABASE_NAME

MongoDB学习(三)-- 增删改
MongoDB学习(三)-- 增删改

1.2 查看当前选择库

db

在未选择数据库时,我使用robo3t进行当前数据库查看,显示的是第一个数据库,但是我使用mongo shell查看时,是“test”。

1.3 查看所有数据库

show dbs

MongoDB学习(三)-- 增删改

1.4 删除库

删除选定的数据库,如果没有选定数据库,会删除默认选择的"test"数据库。

db.dropDatabase()

2、集合collection

2.1 查看集合

show collections

MongoDB学习(三)-- 增删改

2.2 创建集合

2.2.1 直接创建

db.createCollection(name, { //集合的名字
capped: <Boolean>,        //是否启用集合限制,如果开启需要制定一个限制条件,默认为不启用,这个参数没有实际意义
autoIndexId: <Boolean>,   //是否使用_id作为索引,默认为使用(true或false)
size: <number>,           //限制集合使用空间的大小,默认为没有限制,size的优先级比max要高
max <number>}             //集合中最大条数限制,默认为没有限制
)

MongoDB学习(三)-- 增删改

2.2.2 特殊情况

如果数据库下没有classes集合,往这个集合插入数据时,会自动创建该集合。

db.classes.insert({"name" : "语文"})

MongoDB学习(三)-- 增删改
MongoDB学习(三)-- 增删改

2.3 删除集合

db.COLLECTION_NAME.drop()

MongoDB学习(三)-- 增删改

3、文档document

3.1 增加

MongoDB学习(三)-- 增删改

3.1.1 单条数据插入

insert和insertOne均可插入单条数据,但是返回值不同。
MongoDB学习(三)-- 增删改
MongoDB学习(三)-- 增删改

3.1.2 批量数据插入

insert和insertMany均可插入多条数据,但是返回值不同。
MongoDB学习(三)-- 增删改

MongoDB学习(三)-- 增删改

3.2 删除

MongoDB学习(三)-- 增删改

3.2.1 删除单个文档-deleteOne

删除符合条件的第一个文档。
deleteOne只删除一条name为李四的记录。

db.Students.deleteOne({"name":"李四"})

MongoDB学习(三)-- 增删改

3.2.2 删除多个文档-deleteMany

过滤条件为name=李四,批量删除name为李四的记录,使用deleteMany和remove将删除集合中全部name为李四的数据,只是deleteMany和remove两者的返回值不同。

db.Students.deleteMany({"name":"李四"})

MongoDB学习(三)-- 增删改

3.2.3 remove

query:过滤条件
justOne:是否只删除一条记录。要将删除限制为仅一个文档,请设置为true。省略使用默认值false并删除所有符合删除条件的文档。
MongoDB学习(三)-- 增删改

3.2.3.1 删除单条记录

删除符合条件的第一个文档。
过滤条件为name=李四,justOne设置为true,即只删除一条记录。

db.Students.remove({"name":"李四"},true)

3.2.3.2 删除多条记录

过滤条件为name=李四,justOne设置为false,即删除所有name为李四的记录。

db.Students.remove({"name":"李四"},false)

MongoDB学习(三)-- 增删改

3.2.3.3 删除所有记录

若无过滤条件,remove则会删除集合中的全部内容。

db.Students.remove({})

3.3 修改

MongoDB学习(三)-- 增删改

    query : 相当于where条件。
    update : update的对象和一些更新的操作符(如$,$inc...等,相当于set后面的
    upsert : 可选,默认为false,代表如果不存在update的记录则不更新也不插入,设置为true代表不存在则添加。
    multi : 可选,默认为false,代表只更新找到的第一条记录,设为true时,代表更新找到的全部记录。
    writeConcern :可选,抛出异常的级别。

更新操作是不可分割的:若两个更新同时发送,先到达服务器的先执行,然后执行另外一个,不会破坏文档。

3.3.1 常规修改

3.3.1.1 覆盖

db.Students.update(
    {"name":"李四"},
    {"age":"15","name":"王五"}
)

MongoDB学习(三)-- 增删改

3.3.1.2 局部修改

db.Students.update(
    {"name":"李四"},
    {"$set":{"age":"15","name":"王五"}} 
)

MongoDB学习(三)-- 增删改

3.3.1.3 改多条

将multi参数设为true

db.Students.update(
    {"name":"李四"},
    {"$set":{"age":"18","name":"甜甜"}},
    {"multi":true}
)

MongoDB学习(三)-- 增删改

3.3.1.4 有则修改,无则添加

设置upset为true

db.Students.update(
    {"name":"诸葛亮"},
    {"$set":{"age":"88","name":"诸葛暗"}},
    {"multi":true,"upsert":true}
)

MongoDB学习(三)-- 增删改

3.3.1.5 删除字段

db.Students.update(
    {"name":"王五"},
    {"$unset":{"address":"",}} 
)

MongoDB学习(三)-- 增删改

3.3.2 加减操作

3.3.2.1 加法操作

所有学生的年龄均增加1.需注意age需要是int类型。

 db.Students.update(
 {},
 {"$inc":{"age":1}},
 {"multi":true})

MongoDB学习(三)-- 增删改

3.3.2.2 减法操作

年龄都-10

 db.Students.update(
 {},
 {"$inc":{"age":-10}},
 {"multi":true})

MongoDB学习(三)-- 增删改

3.3.3 添加删除数组内元素

3.3.3.1 $push

$push的功能是往现有数组内添加元素。
为名字为李二麻子的人添加一个爱好read。

 db.Students.update(
 {"name":"李麻子"},
 {"$push":{"hobbies":"读书"}})

MongoDB学习(三)-- 增删改

3.3.3.2 $pop

$pop的功能是按照位置只能从头或从尾即两端删元素,类似于队列。1代表尾,-1代表头.
从数组末尾删除一个元素:

db.Students.update(
 {"name":"李麻子"},
 {"$pop":{"hobbies":1}})

MongoDB学习(三)-- 增删改

从头部删除一个元素:

 db.Students.update(
 {"name":"李麻子"},
 {"$pop":{"hobbies":-1}})

MongoDB学习(三)-- 增删改

上一篇:(暂定)python:【列表】的具体应用


下一篇:mysql(自动添加系统时间)timestamp类型字段的CURRENT_TIMESTAMP与ON UPDATE CURRENT_TIMESTAMP属性