MongoDB简介及基本操作

新建数据库

语法:

use DATABASE NAME 

use:用于切换/创建数据库,若不存在则创建,否则切换到指定数据库。
DATABASE_NAME:数据库名称。
执行use articledb命令,创建数据库articledb。

查看数据库

语法: 查看全部数据库

show dbs

删除数据库
语法

db.dropDatabase()

db:表示当前数据库对象。
dropDatabase():用于删除当前数据库的方法。
删除当前数据库,执行命令前应使用use命令切换到要删除的数据库,为了防止误删可执行命令db验证当前数据库是否为指定删除的数据库。

集合操作
创建集合
语法

显示创建
db.createCollection(COLLECTION NAME, [OPTIONS])
隐式创建
db.COLLECTION NAME.insert(DOCUMENT)

db:表示当前数据库对象。
createCollection():创建集合方法。
DOCUMENT表示文档。
COLLECTION_NAME表示集合名称。
OPTIONS表示集合配置。
insert():向集合中插入文档的方法。
删除集合
语法

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():插入多文档方法。
insert()和save()方法的区别在于,若使用insert()方法插入文档时,集合中已存在该文档,则会报错。若使用save()方法插入文档时,集合中已存在该文档,则会覆盖。

文档更新
语法

db.COLLECTION NAME.update(criteria,objNew,upsert, multi)

db:当前数据库对象。
COLLECTION_NAME: 当前集合对象。
update():更新文档方法。
criteria: 更新的查询条件,类似sql中的where。
objNew:新的对象和操作符,类似sql中的set。
upsert:不存在更新对象时,是否插入,默认为false
multi:默认为false,只更新查找到的第一个文档,反之更新所有。
升级语法


db.集合名.update(条件, 新数据){修改器: {键:值}}

文档删除

语法(删除单个)

删除全部文档

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():格式化查询返回结果
聚合操作
聚合管道操作是将文档在一个管道处理完毕后,把处理的结果传递给下一个管道进行再次处理。聚合管道是使用不同的管道阶段操作器进行不同聚合操作,管道阶段操作器也可称为管道操作符,常见管道操作符如下表。

语法(略复杂)


其中“[]”不是必须的,可以省略!!!

常用表达式

管道阶段操作器的值被称为管道表达式,并且每个管道表达式都是一个文档结构,由字段名称、字段值和管道表达式组成。常见的管道表达式如下表。

案例说明
练习1:统计运动鞋和电子通讯的价格price

db.c5.aggregate([
{
KaTeX parse error: Expected '}', got 'EOF' at end of input: group:{ id: "type",
rs: {s u m : " sum: "sum:"price"}
}
}
])
//对于g r o u p 分组 i d 是必选项,选择字段 t y p e 进行分组时,字段前面要加上 group分组 id是必选项,选择字段type进行分组时,字段前面要加上group分组id是必选项,选择字段type进行分组时,字段前面要加上符号
//rs为新增的列,存放统计数据,男女生的总年龄计算使用$sum
// id和rs都可以加上双引号,没有差别

练习2 统计运动鞋和电子通讯的个数

db.c5.aggregate([
{
KaTeX parse error: Expected '}', got 'EOF' at end of input: …roup:{ " id": "type",
"
gs
"
:
{KaTeX parse error: Expected 'EOF', got '}' at position 7: sum: 1}̲ } } ]) //这里没有c…sum:1代替(匹配多少次,就多少个1相加),这里展示 id和gs加上双引

练习3 求商品总数和平均价格

db.c5.aggregate([
{
KaTeX parse error: Expected '}', got 'EOF' at end of input: …ll, total num:{sum:1},
total price avg:{a v g : " avg:"avg:"price"}
}
}
])

这里求的是总人数,管道依然可以选择分组,但是没有分组字段,所以_id为null
total_num为新增的列,存放总数
total_price_avg为新增的列,存放平均价格

练习4:使用$min表达式,将集合陈中的文档按类型type进行分组,并计算各个分组中价格price最小值,具体命令如下。

db.c5.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: group:{" id":"type",“price”:{m i n : " min:"min:"price"}}}]).pretty()

练习5 使用$max表达式,将集合c5中的文档按类型type进行分组,并计算各个分组中价格price最大
值,具体命令如下。

db.c5.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: group:{" id":"type",“price”:{m a x : " max:"max:"price"}}}]).pretty()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值