1. MongoDB基础知识
MongoDB是一个开源的文档型数据库,它将数据存储为文档,这些文档是一个类似于JSON的BSON格式,以键值对的形式组织数据。MongoDB支持动态查询,索引,排序,可读性和高效率的数据聚合操作。
MongoDB的灵活性和速度适合需要强大的查询和聚合的应用程序。
1.1 文档类型
在MongoDB中,文档指的是一组键值对或者是一个Bson文档对象。它们非常类似于JSON文档,但是支持函数和二进制数据等更复杂的类型。
文档的BSON格式:
{
"item": "apple",
"qty": 5,
"status": "A",
"size": {
"h": 10,
"w": 10,
"uom": "cm"
},
"tags": [ "red", "green" ],
"dim_cm": [ 5, 7 ]
}
以上是一个MongoDB文档的BSON格式,这个文档描述了一个水果的名称,数量,状态以及其他的附加属性。它包含了一个大小子文档,一个标签数组以及一个尺寸的数组。
1.2 集合
在MongoDB中,文档存储在集合中,集合是一组有序的文档,是MongoDB中的一个核心概念。可以将集合视为表格的一个实例,每个文档是一行数据。
创建集合语法格式:
db.createCollection(name, options)
例如,以下代码将创建一个名为"mycol"的集合:
use testDB
db.createCollection("mycol")
这将在testDB数据库中创建一个名为"mycol"的新集合。
2. MongoDB的安装
在安装MongoDB之前,需要确保系统中已经安装了所需的软件和库。例如,MongoDB需要使用curl、openssl、openssl-devel、libsasl2、libsasl2-devel和libpcap等库文件。
2.1 安装依赖项
首先需要安装下面的依赖项库文件,以确保MongoDB能够正常工作。
Curl
yum install curl
Openssl
yum install openssl
yum install openssl-devel
Libsasl2
yum install libsasl2
yum install libsasl2-devel
Python 3.x
yum install python3
yum install python3-devel
2.2 安装MongoDB
可以通过以下两种方式安装MongoDB。
方式1:使用yum命令进行安装
添加MongoDB的软件仓库:
vim /etc/yum.repos.d/mongodb.repo
在文件中添加下面的内容:
[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1
安装MongoDB:
yum install mongodb-org
方式2:下载软件包进行安装
下载适用于您系统的MongoDB安装包,并解压缩。
tar -zxvf mongodb-linux-x86_64-3.2.1.tgz -C /opt/mongodb
3. MongoDB的启动和停止
3.1 启动MongoDB
启动MongoDB分为两个步骤:启动服务设施和启动MongoDB实例进程。
第一步:启动服务设施
服务设施用于管理MongoDB服务进程。使用以下命令启动:
mongod
第二步:启动MongoDB实例
启动MongoDB实例时,需要指定数据库路径,以及日志文件的路径和日志级别等其他参数。以下是一个示例启动命令:
mongod --dbpath /data/db/ --logpath /var/log/mongodb.log --logappend --bind_ip 0.0.0.0 --port 27017 --fork
这将启动一个新的MongoDB实例,同时将输出重定向到日志文件中。
3.2 关闭MongoDB
关闭MongoDB的方法和启动非常类似。它分为两个步骤:首先停止MongoDB实例,然后停止MongoDB服务设施。
第一步:停止MongoDB实例
可以使用以下命令来停止MongoDB实例:
mongo admin --eval "db.shutdownServer()"
第二步:停止服务设施
停止MongoDB服务设施:
killall mongod
这将停止所有运行的MongoDB实例进程。
4. MongoDB基本操作
4.1 数据库操作
在MongoDB中,可以使用以下命令进行数据库的基本操作。
列出所有数据库
列出所有可用的数据库:
show dbs
创建数据库
创建一个新的数据库,可以使用以下命令:
use mylovetest
删除数据库
删除一个数据库,可以使用以下命令:
db.dropDatabase()
4.2 集合操作
下面列出了MongoDB中集合的主要操作命令。
创建集合
在MongoDB中,可以使用以下命令来创建集合:
db.createCollection("mycoll");
插入文档
可以使用以下命令将一个文档插入到集合中:
db.mycoll.insert({name:"jsz",zone:"aws",skill:"linux",hobby:["reading","running"]});
查询文档
可以使用以下命令来查询文档:
db.mycoll.find();
更新文档
可以使用以下命令来更新文档:
db.mycoll.update({"name":"jsz"},{"$set":{"zone":"alibaba"}});
删除文档
可以使用以下命令来删除文档:
db.mycoll.remove({"name":"jsz"});
4.3 操作符
在MongoDB中,可以使用以下操作符进行数据的操作。
查询操作符
以下是常用的查询操作符:
等于:$eq
大于:$gt
小于:$lt
大于等于:$gte
小于等于:$lte
不等于:$ne
查询指定的值:$in
查询不包含指定的值:$nin
示例:使用操作符查询文档
db.mycoll.find({age:{$gt:30}});
以上命令将找到年龄大于30的文档。
5. MongoDB的优化
5.1 索引优化
索引是MongoDB中数据查询的一种重要方式,下面介绍MongoDB索引的使用:
创建索引
可以使用以下命令来创建索引:
db.mycoll.createIndex({"name":1});
以上命令将会在名为"mycoll"的集合中创建一个名为"name"的升序索引。
删除索引
可以使用以下命令删除索引:
db.mycoll.dropIndex({"name":1});
这个命令将删除mycoll集合中的名为"name"的索引。
5.2 复制集和分片集群
MongoDB支持高可用性和横向扩展,它采用复制集和分片集群的方式实现。
复制集
复制集是一组MongoDB实例的集合,其中每个实例都维护数据库的副本。其中,一个实例作为主节点,可以接受读写操作。其余的实例作为从节点,它们维护的MongoDB数据与主节点的数据完全相同,并且可以用于读操作。如果主节点出现故障,从节点中的某一个节点将会自动的成为主节点。
分片集群
分片集群由多个MongoDB实例组成,其中每个实例称为一个分片。数据会被分成多个分片,并在分片之间进行划分和分布。当数据集的大小增加到单个分片无法满足性能要求时,可以使用分片集群来实现水平扩展。
6. 总结
本文介绍了MongoDB的基础知识,包括文档类型、集合操作、索引优化等。同时还介绍了MongoDB的安装、启动和关闭方法,以及优化技术。了解MongoDB的基础知识可以帮助开发人员基于MongoDB快速开发应用程序,并最大程度地利用MongoDB的特性和优势。