mongodb基本操作
Posted 薄荷味日记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongodb基本操作相关的知识,希望对你有一定的参考价值。
一、MongoDB特点
- 模式自由 :可以把不同结构的文档存储在同一个数据库里
- 面向集合的存储:适合存储 JSON风格文件的形式
- 完整的索引支持:对任何属性可索引
- 复制和高可用性:支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制。复制的主要目的是提供冗余及自动故障转移
- 自动分片:支持云级别的伸缩性:自动分片功能支持水平的数据库集群,可动态添加额外的机器
- 丰富的查询:支持丰富的查询表达方式,查询指令使用JSON形式的标记,可轻易查询文档中的内嵌的对象及数组
- 快速就地更新:查询优化器会分析查询表达式,并生成一个高效的查询计划
- 高效的传统存储方式:支持二进制数据及大型对象(如照片或图片)
- Mongodb 将数据存储为一个文档,数据结构由(key —> value)键值对组成
- MongoDB的文档结构为BJSON格式(BJSON全称:Binary JSON),类似于JSON对象
二、操作mongodb数据库
1、创建数据库
语法: use 数据库名
注意:如果数据库不存在则创建数据库,否则切换到指定数据库。
如果新创建的数据库不在列表内,要显示它,需要插入一些数据
2、查看所有数据:
show dbs
3、查看当前正在使用的数据库
a、db
b、db.getName()
4、查看当前数据库信息
db.stats()
5、断开连接
exit
6、删除数据库
db.dropDatabase()
三、集合操作
1、创建集合
db.createCollection(name,options)
参数 | 类型 | 描述 |
Name | String | 要创建的集合的名称 |
Options | Document | 用于指定集合的配置 |
2、查看当前数据库下有哪些集合
show collections
3、删除集合
db.
集合名称
.drop()
3、文档插入
db.
集合名称
.insert([文档1,...})
插入文档时,如果不指定_id参数,MongoDB会为文档分配一个唯一的ObjectId
4、文档更新
db.集合名称.update(
<query>,
<update>,
{
upset: <boolean>,
multi: <boolean>,
writeConcern: <boolean> //抛出异常的级别,一般不写
}
)
- 参数query: 查询条件,类似sql语句update中where部分
- 参数update: 可选,更新操作符,($set, $inc)等,$set直接更新,$inc在原有的基础上累加后更新,类似sql语句update中set部分
- 参数multi: 可选,默认是false,表示只更新找到的第一条记录,值为true表示把满足条件的文档全部更新
5、文档查找
1.方法find():查询
db.集合名称.find({<key:1>,}) // key:要显示的字段,1表示显示
2.方法findOne():查询,只返回第一个
db.集合名称.findOne({条件文档})
3.方法pretty():将结果格式化
db.集合名称.find({条件文档}).pretty()
6、查询条件操作符
- 等于,默认是等于判断,没有运算符
- 小于$lt
- 小于或等于$lte
- 大于$gt
- 大于或等于$gte
- 不等于$ne
7、范围运算符
使用‘$in’,‘$nin‘ 判断是否在某个范围内
8、逻辑运算符
a、AND条件
db.集合名.find({条件1,条件2, ... })
b、OR条件
db.集合名.find({$or[{条件1},{条件2} ,.. .}])
c、AND和OR联合使用
db.集合名.find{
{
条件1,
条件2,
$or:[{条件3},{条件4}]
}
}
9、支持正则表达式
使用 / / 或 $regex 编写正则表达式
例如:查询姓黄的学生
db.stu.find({name:/^黄/})
db.stu.find({name:{$regex:‘^黄‘}}})
10、limit 、skip
a、limit(): 用于读取指定数量的文档
语法:db.集合名称.find().limit(NUMBER)
b、skip():用于跳过指定数量的文档
语法:db.集合名称.find().skip(NUMBER)
c、limit() 与 skip() 联合使用
通常用这种方法实现分页功能
例如:db.stu.find().skip(3).limit(4)
11、排序
语法:db.集合名称.find().sort({字段:1,...})
- 参数1为升序排列
- 参数-1为降序排列
12、文档删除
db.集合名称.remove(
<query>,
{
justOne: <boolean>
}
)
- 参数query:可选,删除的文档的条件
- 参数justOne:可选,如果设为true或1,则只删除一条,默认false,表示删除多条
四、文档操作
五、SQL与MongoDB之间数据对比
SQL术语/概念 |
MongoDB术语/概念 |
解释/说明 |
database |
database |
数据库 |
table |
collection |
数据库表/集合 |
row |
document |
数据记录行/文档 |
column |
field |
数据字段/域 |
index |
index |
索引 |
table joins |
|
表连接,MongoDB不支持 |
primary key |
primary key |
主键,MongoDB自动将_id字段设置为主键 |
以上是关于mongodb基本操作的主要内容,如果未能解决你的问题,请参考以下文章
ios - Heroku 和 MongoDb 上的自定义解析服务器错误 3080:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项
VSCode自定义代码片段15——git命令操作一个完整流程