数据库操作
新建数据库
use DATABASE NAME
use:用于切换/创建数据库,若不存在则创建,否则切换到指定数据库。DATABASE_NAME:数据库名称。
执行use articledb命令,创建数据库articledb。
查看数据库
show dbs
或者查看当前数据库,需要先切换到指定数据库
db
删除数据库
db.dropDatabase()
db:表示当前数据库对象。
dropDatabase():用于删除当前数据库的方法。
删除当前数据库,执行命令前应使用use命令切换到要删除的数据库,为了防止误删可执行命令db验证当前数据库是否为指定删除的数据库。
集合操作
创建集合
db.createCollection(COLLECTION NAME, [OPTIONS])
删除集合
db.COLLECTION NAME.drop()
db:表示当前数据库对象。
COLLECTION_NAME:表示集合名称。drop():删除集合方法。
文档操作
文档插入
db.COLLECTION NAME.insert(document)#单文档插入
db.COLLECTION NAME.save(document)
db.COLLECTION NAME.insertMany([document1,document2,...])#多文档插入
db:当前数据库对象
COLLECTION_NAME:**当前集合对象。insert()和save():插入单文档方法。
insertMany():插入多文档方法。
文档更新
db.COLLECTION NAME.update(criteria,objNew,upsert, multi)
db:当前数据库对象。
COLLECTION_NAME:当前集合对象。update():更新文档方法。
criteria:更新的查询条件,类似sql中的where。
objNew:新的对象和操作符,类似sql中的set。
upsert:不存在更新对象时,是否插入,默认为false
multi:默认为false,只更新查找到的第一个文档,反之更新所有。
修改器 | 作用 |
$inc | 递增 |
$rename | 重命名列 |
$set | 修改列值 |
$unset | 删除列 |
文档删除
删除单个
db.COLLECTION NAME.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
删除全部
db.COLLECTION NAME.remove({})
db:当前数据库对象。
COLLECTION_NAME:当前集合对象。remove():删除文档方法。
query:删除文档的条件,可选参数。
justOne:的boolean为true或1时,表示只删除查询出的第一个文档。writeConcern: 表示抛出异常级别。
文档简单查询
db.COLLECTION NAME.find()#查询所有文档语法
db.COLLECTION NAME.find().pretty()#查询所有文档,以易读的方式展示
db:当前数据库对象
COLLECTION_NAME:当前集合对象
find():查询所有文档方法
pretty():格式化查询返回结果
聚合查询
聚合操作
聚合管道操作是将文档在一个管道处理完毕后,把处理的结果传递给下一个管道进行再次处理。聚合管道是使用不同的管道阶段操作器进行不同聚合操作,管道阶段操作器也可称为管道操作符,常见管道操作符如下表。
常见管道操作符 | 相关说明 |
$group | 将集合中的文档进行分组,便于后续统计结果 |
$limit | 用于限制MongoDB聚合管道返回的文档数 |
$match | 用于过滤数据,只输出符合条件的文档 |
$sort | 将输入的文档先进行排序,再输出 |
$project | 用于修改输入文档的结构(增加、删除字段等)和名称 |
$skip | 在聚合管道中跳过指定数量的文档,并返回剩余的文档 |
db.集合名称.aggregate([
{管道:{表达式}}
....
])
案例学习
准备集合c5,插入文档(注意,一般不指定_id,键也不需要双引号)
db.c5.insert([
{ id:"1",name:"iphone8",price:3000,type:"电子通讯"},{ id:"2",name:"lining",price:500,type:"运动鞋"},
{ id:"3",name:"安踏",price:300,type:"运动鞋"},
{ id:"4",name:"HUAWEI MATE30",price:5000,type:"电子通讯"},{ id:"5",name:"vivo x27",price:4000,type:"电子通讯"}])
练习1
使用$group操作符,将集合c5中的文档按type进行分组,具体命令如下。
db.c5.aggregate([{$group:{" id":"$type"}}]).pretty()
练习2
使用$limit操作符,展示集合c5中前三个文档,具体命令如下。
db.c5.aggregate({$limit:3}).pretty()
练习3
使用$match操作符,将集合c5中键name的值为HUAWEI MATE30的文档查询出来,具体命令如下。
db.c5.aggregate([{$match:{"name":"HUAWEI MATE30"}}]).pretty()
练习4
使用$sort操作符,将集合c5中的文档按照键price的值进行降序排序,具体命令如下。
db.c5.aggregate([{$sort:{"price": 1}}]).pretty()
练习5
使用$project操作符,展示集合c5中的文档,并且文档均不包含字段_id,具体命令如下。
db.c5.aggregate([{$project:{" id":0}}]).pretty()
练习6
使用$skip操作符,展示集合c5中的_id为5的文档(即跳过前面的4个文档),具体命令如下。
db.c5.aggregate({$skip:4}).pretty()