文章目录
1、数据库database
1.1 创建库
//有则使用这个数据库,没有就创建
use DATABASE_NAME
1.2 查看当前选择库
db
在未选择数据库时,我使用robo3t进行当前数据库查看,显示的是第一个数据库,但是我使用mongo shell查看时,是“test”。
1.3 查看所有数据库
show dbs
1.4 删除库
删除选定的数据库,如果没有选定数据库,会删除默认选择的"test"数据库。
db.dropDatabase()
2、集合collection
2.1 查看集合
show collections
2.2 创建集合
2.2.1 直接创建
db.createCollection(name, { //集合的名字
capped: <Boolean>, //是否启用集合限制,如果开启需要制定一个限制条件,默认为不启用,这个参数没有实际意义
autoIndexId: <Boolean>, //是否使用_id作为索引,默认为使用(true或false)
size: <number>, //限制集合使用空间的大小,默认为没有限制,size的优先级比max要高
max <number>} //集合中最大条数限制,默认为没有限制
)
2.2.2 特殊情况
如果数据库下没有classes集合,往这个集合插入数据时,会自动创建该集合。
db.classes.insert({"name" : "语文"})
2.3 删除集合
db.COLLECTION_NAME.drop()
3、文档document
3.1 增加
3.1.1 单条数据插入
insert和insertOne均可插入单条数据,但是返回值不同。
3.1.2 批量数据插入
insert和insertMany均可插入多条数据,但是返回值不同。
3.2 删除
3.2.1 删除单个文档-deleteOne
删除符合条件的第一个文档。
deleteOne只删除一条name为李四的记录。
db.Students.deleteOne({"name":"李四"})
3.2.2 删除多个文档-deleteMany
过滤条件为name=李四,批量删除name为李四的记录,使用deleteMany和remove将删除集合中全部name为李四的数据,只是deleteMany和remove两者的返回值不同。
db.Students.deleteMany({"name":"李四"})
3.2.3 remove
query:过滤条件
justOne:是否只删除一条记录。要将删除限制为仅一个文档,请设置为true。省略使用默认值false并删除所有符合删除条件的文档。
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)
3.2.3.3 删除所有记录
若无过滤条件,remove则会删除集合中的全部内容。
db.Students.remove({})
3.3 修改
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":"王五"}
)
3.3.1.2 局部修改
db.Students.update(
{"name":"李四"},
{"$set":{"age":"15","name":"王五"}}
)
3.3.1.3 改多条
将multi参数设为true
db.Students.update(
{"name":"李四"},
{"$set":{"age":"18","name":"甜甜"}},
{"multi":true}
)
3.3.1.4 有则修改,无则添加
设置upset为true
db.Students.update(
{"name":"诸葛亮"},
{"$set":{"age":"88","name":"诸葛暗"}},
{"multi":true,"upsert":true}
)
3.3.1.5 删除字段
db.Students.update(
{"name":"王五"},
{"$unset":{"address":"",}}
)
3.3.2 加减操作
3.3.2.1 加法操作
所有学生的年龄均增加1.需注意age需要是int类型。
db.Students.update(
{},
{"$inc":{"age":1}},
{"multi":true})
3.3.2.2 减法操作
年龄都-10
db.Students.update(
{},
{"$inc":{"age":-10}},
{"multi":true})
3.3.3 添加删除数组内元素
3.3.3.1 $push
$push的功能是往现有数组内添加元素。
为名字为李二麻子的人添加一个爱好read。
db.Students.update(
{"name":"李麻子"},
{"$push":{"hobbies":"读书"}})
3.3.3.2 $pop
$pop的功能是按照位置只能从头或从尾即两端删元素,类似于队列。1代表尾,-1代表头.
从数组末尾删除一个元素:
db.Students.update(
{"name":"李麻子"},
{"$pop":{"hobbies":1}})
从头部删除一个元素:
db.Students.update(
{"name":"李麻子"},
{"$pop":{"hobbies":-1}})