学习MongoDB语法,这一篇就够了

目录

一、MongoDB认识

二、语法

1.数据库操作

2.集合操作 

3.文档操作

1>.插入

2>.查询

 3>.更新

4.>删除

 4.Index索引

1>.索引查看

2>.创建索引

3>.删除索引

4>. 执行计划

 5>. 涵盖查询

 三、总结


一、MongoDB认识

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

MongoDB服务端可运行在Linux、Windows或mac os x平台,支持32位和64位应用,默认端口为27017。
推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB。


二、语法

1.数据库操作

操作语法备注
选择和创建数据库

use 数据库名

如果数据库不存在,会自动创建,但是要存入数据时才会显示,此时是存放在内存中的,存入数据才会写入磁盘
查看有权查看的所有数据库

show dbs

或者

show databases

查看当前使用的数据库db
删除数据库                 db.dropDatabse()db为当前数据库,删除当前数据库

2.集合操作 

操作语法备注
创建集合db.createCollection(集合名)

createCollection为显式创建,即创建后即使集合为空也会显示。

隐式创建则为在插入一条文档时,若集合不存在则会自动创建。

删除集合db.集合名.drop()
查看所有集合show collections

3.文档操作

1>.插入

操作      语法备注
单行插入db.集合名.insert({key:value})这里的集合可以不存在,会自动隐式创建
多行插入db.集合名.insertMany([{key1:value1},{key2:value2}])这里的集合可以不存在,会自动隐式创建

2>.查询

操作      语法备注
基本查询
查询集合中所有文档db.集合名.find()
投影查询
查询所有数据的特定属性db.集合名.find({},{属性1:1})

查看所有文档的属性1(附带_id属性)
:1 显示 

:0不显示(针对_id)

查询特定数据的特定属性db.集合名.find({name:"小明",{属性1:1}})查询name为小明的的属性1
统计查询
统计所有记录数db.集合名.count()
统计符合条件记录数db.集合名.count({name:"小明"})统计name为小明的所有记录数
分页查询
查询第一页db.集合名.find().limit(4)

limit(n)查询前n跳数据,此时为前四条

find()中也可以写入查询条件

查询第n页db.集合名.find().limit(4).skip(n-1 * 4)skip(n)跳过前n条数据
排序查询
默认以_id升序排列db.集合名.find().sort()

按条件升序

db.集合名.find().sort({age : 1})

以age升序排列

:1 升序

:-1 降序

正则查询(模糊查询)
db.集合名.find({name : "\ 刘 \"})

查询name中所有包含刘的数据记录

支持所有正则表达式

比较查询
大于 $gtdb.集合名.find({age: {$gt : NumberInt(18) } })查询所有age > 18的数据记录
小于 $ltdb.集合名.find({age: {$lt : NumberInt(18) } })查询所有age < 18的数据记录

大于等于 $gte, 小于等于$lte,不等于$ne

格式与上面两条记录的格式一样  find( {字段 : {$... : NumberInt(n)}  } )

包含查询
包含 $indb.集合名.find({字段: {$in : [a, b] } })查询字段为a或字段为b的数据记录
不包含 $nindb.集合名.find({字段: {$nin : [a, b] } })查询字段不为a或字段不为b的数据记录
单条件查询
 查询集合中所有符合条件的文档db.集合名.find({age:18})根据条件查询,这里查询age是18的文档数据
 查询集合中第一条符合条件的文档db.集合名.findOne({sex:女})
多条件查询
$anddb.集合名.find( {$and : [{条件1}, {条件2}] } )查询符合条件1 和 条件2的数据记录
$ordb.集合名.find( {$or : [{条件1}, {条件2}] } )查询符合条件1 或 条件2的数据记录

 3>.更新

操作      语法备注
覆盖修改db.集合名.update({name:"小明"},{age:NumberInt(22)} )

会将name为小明的这一整条数据替换为 age:22

在插入整数时,要使用函数NumberInt(value),因为单纯写一个数字MongoDB会认为是浮点型

局部修改db.集合名.update({name:"小明"},{$set:{age:NumberInt(22)}}){$set: {update}},只会将name为小明的这一整条数据中的age属性改为22
上述修改,都是默认修改找到的第一条符合的数据
批量更新db.集合名.update({age:18},{$set:{sex: "女"}}, {multi:true})再加上参数{multi:true},可以将所有age为18数据中的sex都修改为女
列值增长修改db.集合名.update({name:"小明"},{$inc:{age:NumberInt(1) }}){$inc: {age:NumberInt(1)}},将name为小明的数据中的age增加1(自定义增加数量)

4.>删除

操作语法备注
选择多条删除db.集合名.remove({name:"小明"})删除全部name为小明的数据
删除全部db.集合名.remove({})删除所有数据
删除多条数据

db.集合名.deleteMany({query})

删除一条数据

db.集合名.deleteOne({query})

 

 4.Index索引

索引会增强查询效率

1>.索引查看

操作语法备注
查看所有索引db.集合名.getIndexes()

v:内置版本号

key: 该索引对应的键 : 1(升序) /-1(降序)

name : 索引名

ns : 存放在哪个空间

2>.创建索引

操作语法备注
创建索引db.集合名.createIndex(keys,option)

keys: 要为哪些键创建索引,可以使多个

        格式 {key1 : 1, key2 : -1}

option: 传入的参数,我们作为基础使用,不需要填写

3>.删除索引

操作语法备注
删除指定索引

db.集合名.dropIndex(索引名)

或者

db.集合名.dropIndex(索引的创建规则)

keys: 要为哪些键创建索引,可以使多个

        格式 {key1 : 1, key2 : -1}

option: 传入的参数,我们作为基础使用,不需要填写

删除所有索引

db.集合名.dropIndexes()

_id的索引不会被删除

4>. 执行计划

db.集合.find({},{name:1,age:1}).explain()  投影查询

作用 查看索引是否被引用,

fetch(抓取):被引用

collscan(集合扫描):未被引用

 5>. 涵盖查询

投影查询的刚好是有索引的字段,效率会非常高

 三、总结

"掌握MongoDB的基本操作是迈向高效数据管理的第一步。勇敢尝试,并不断实践,掌握更多的技巧和知识,才能真正发挥MongoDB的全部潜力。期待在你的项目中看到这些操作的精彩应用,加油!"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值