1. MongoDB 简介
MongoDB是一个基于分布式文件存储的开源数据库系统。它使用了类JSON的文档存储格式,提供了高性能、高可用性和自动扩展等特性。与传统的关系型数据库不同,MongoDB不需要预定义表结构,并且可以使用灵活的查询语言查找数据。
在NoSQL数据库中,MongoDB是一种非常流行的解决方案。由于其高性能、可扩展性和开发人员友好的特点,许多企业和开发者都将其用于开发Web应用程序、大数据应用等。
2. MongoDB 安装
2.1 下载 MongoDB
在安装 MongoDB 之前需要先下载相应的 MongoDB 安装包。MongoDB 官网提供了各种版本的安装包,可根据不同的操作系统和环境需求选用。
以下为在 Windows 环境下下载安装包的命令:
curl -O https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2012plus-4.2.7-signed.msi
2.2 安装 MongoDB
下载完 MongoDB 后,下一步是进行安装。在 Windows 系统下,双击下载的 .msi 文件后按照提示进行安装即可。
安装过程中需要设置 MongoDB 的数据文件存放路径和日志文件存放路径,同时可以选择将 MongoDB 服务安装为 Windows 服务,以便在系统启动时自动启动 MongoDB 服务。
以下为在 Windows 环境下安装 MongoDB 的命令:
msiexec.exe /l*v "mongodb-install.log" /qn /i "mongodb-win32-x86_64-2012plus-4.2.7-signed.msi" INSTALLLOCATION="C:\mongodb" ADDLOCAL="all"
3. MongoDB 数据库
MongoDB 数据库由集合(Collections)组成,每个集合是许多文档的集合。文档可以看作是 MongoDB 数据库中的行。它们以 BSON 格式(一个类 JSON 格式的二进制表达形式)存储。
与关系型数据库不同,MongoDB 可不需要事先定义集合的架构。这意味着你可以省略表的定义,直接插入数据。例如下面的命令会创建一个名为 demo 的数据库,并在其中插入一条记录:
use demo
db.users.insertOne({"name": "John", "age": 30})
如果 demo 数据库不存在,MongoDB 会自动创建它。插入记录时,MongoDB 会自动创建一个名为 users 的集合。如果该集合不存在,它也会自动创建。
4. MongoDB 查询
4.1 查询单条记录
在 MongoDB 中,可以使用 findOne()
方法来获取单条记录。以下命令会在 users 集合中查找一个名字为 John 的记录:
db.users.findOne({"name": "John"})
如果集合中不存在 name 为 John 的记录,将返回 null
。
4.2 条件查询
MongoDB 支持各种条件查询。以下命令返回年龄大于 20 的所有记录:
db.users.find({"age": {"$gt": 20}})
上述命令中,$gt
是 MongoDB 中的一个操作符,它的意义是“大于”。
4.3 模糊查询
在 MongoDB 中,可以使用正则表达式进行模糊查询。例如,以下命令将返回名字中包含字母 a 的所有记录:
db.users.find({"name": {"$regex": "a"}})
上述命令中,$regex
是 MongoDB 中的一个操作符,用于执行正则表达式查询。
5. MongoDB 基本命令
5.1 插入记录
在 MongoDB 中,插入记录的命令是 insertOne()
和 insertMany()
。前者用于插入单条记录,后者用于插入多条记录。
以下命令是向 users 集合中插入一条名字为 Tom、年龄为 25 的记录:
db.users.insertOne({"name": "Tom", "age": 25})
5.2 更新记录
MongoDB 的 updateOne()
方法用于更新单条记录,updateMany()
方法用于更新多条记录。
以下命令对名字为 John 的记录进行更新:
db.users.updateOne({"name": "John"}, {"$set": {"age": 35}})
上述命令中,$set
是 MongoDB 的一个操作符,用于设置被更新记录的属性。
5.3 删除记录
MongoDB 的 deleteOne()
方法用于删除单条记录,deleteMany()
方法用于删除多条记录。
以下命令删除名字为 Tom、年龄为 25 的记录:
db.users.deleteOne({"name": "Tom", "age": 25})
6. MongoDB 索引
索引是一种提高数据库查询性能的技术。MongoDB 支持各种类型的索引,包括单字段索引、多字段索引、全文本索引等。
以下命令在 users 集合的 name 字段上创建一个索引:
db.users.createIndex({"name": 1})
上述命令中,数字 1 表示升序,-1 表示降序。
7. 总结
MongoDB 是一种非常流行的 NoSQL 数据库,以其高性能、可扩展性和灵活的数据存储和查询机制著称。对于Web应用程序、大数据应用等开发场景,MongoDB 无疑是一种理想的选择。