MongoDB是一个跨平台的,面向文档的数据库,是当前NoSQL数据库产品中最热门的一种,是一种介于关系数据库和非关系数据库之间的产品。
MongoDB基于分布式文件存储,便于扩展;支持的数据结构非常松散,类似json格式,可以存储比较复杂的数据类型。
MongoDB支持各种编程语言有很多,如RUBY、PYTHON、JAVA、C++,PHP等。
1.安装MongoDB
MongoDB可以直接用apt-get命令安装。
sudo apt install mongodb-org-server mongodb-org-shell mongodb-org-tools
为了延续后续MongoDB集群的搭建,自建MongoDB的数据库文件目录来启动MongoDB服务。
jishu@Jishu:~$ mkdir -p mongodb/mongo1/db
jishu@Jishu:~$ sudo mongod --dbpath mongodb/mongo1/db &
......
启动log
......
jishu@Jishu:~$ mongo
MongoDB shell version v4.2.6
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
......
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---
>
出现上面的提示表示MongoDB数据库工作正常,安装的MongoDB版本为4.2.6。
2.MongoDB数据库基本操作
2.1 数据库操作
2.1.1 创建数据库
use database_name
如果数据库不存在,则创建数据库;如数据库存在,则切换到指定数据库。
2.1.2 删除数据库
db.dropDatabase()
删除数据库前,需要切换到指定数据库再执行删除命令。
2.1.3 删除数据库
2.2 集合操作
集合操作需要切换到指定数据库后,再进行。
2.2.1 创建集合
db.createCollection(name, options)
参数说明:
name: 要创建的集合名称
options: 可选参数, 指定内存大小、索引的选项。具体参数有:
- capped 布尔型 用于指定创建固定大小的集合
- autoIndexId 布尔型 用于是否指定自动在_id字段创建索引,默认false
- size 数量 为固定集合指定最大值,单位为KB
- max 数量 为固定集合指定文档的最大数量
2.2.2 删除集合
db.collection.drop()
2.3 文档操作
2.3.1 插入文档
db.COLLECTION_NAME.insert(document)
或
db.COLLECTION_NAME.insertOne(document)
或
db.COLLECTION_NAME.insertMany(document)
2.3.2 更新文档
db.COLLECTION_NAME.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
参数说明:
- query : update的查询条件,类似sql update的where条件
- update : update的对象和更新的操作符(如$,$inc...)等,类似于sql update的set数据
- upsert : 可选参数,含义是如果不存在update的记录,是否插入新文档,true为插入,默认是false,不插入
- multi : 可选参数,含义是是否更新按条件找到的所有记录,默认是false,只更新第一条
- writeConcern :可选参数,标明抛出异常的级别
2.3.3 删除文档
db.COLLECTION_NAME.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
参数说明:
- query :可选参数, 删除文档的条件
- justOne : 可选参数,如果为 true,则只删除一个文档,如果为false,则删除所有匹配条件的文档, 默认为false
- writeConcern :可选参数,标明抛出异常的级别
2.3.4 查询文档
db.COLLECTION_NAME.find(
<query>,
projection
)
或
db.COLLECTION_NAME.findOne(
<query>,
projection
)
参数说明:
- query :可选参数, 查询文档的条件
- projection : 可选参数,用于指定返回数据的键值,默认返回所有键值
findOne方法只返回一个文档。
2.4 排序
使用sort()方法对数据进行排序。
db.COLLECTION_NAME.find().sort({KEY:options})
参数说明:
- KEY : 排序字段
- options : 排序方式, 1为升序排序,而-1为降序排序
2.5 索引
索引是对数据库表中一列或多列的值进行排序的一种结构,通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文档并选取那些符合查询条件的记录,导致查询效率非常低。
使用createIndex()方法来创建索引。
db.COLLECTION_NAME.createIndex(keys, options)
参数说明:
- keys : 创建索引的字段
- options : 排序方式, 1为升序排序,而-1为降序排序
2.6 聚合
聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。
db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)