MongoDB概述
MongoDB是一个非关系型数据库管理系统,它使用文档模型存储数据。MongoDB中的文档类似于JSON对象,可以包含键值对和嵌套文档。MongoDB提供了强大的查询语言、聚合框架、索引和直接在数据存储中运行的计算。
MongoDB被广泛应用于许多领域,特别是Web应用程序和大数据领域。它具有高度可扩展性和灵活性,可以处理多种数据类型。此外,MongoDB还提供了一系列工具和库,以方便开发人员在应用程序中使用它。
MongoDB可以存储Web内容管理系统的重要数据,例如页面和文章内容、标签等,以及和用户相关的数据。
MongoDb安装部署
以下是在CentOS 7上安装部署 MongoDB 的详细步骤:
1. 添加 MongoDB 的官方库。
执行以下命令添加 MongoDB 的官方仓库:
```
sudo vim /etc/yum.repos.d/mongodb-org-4.4.repo
```
在文件中添加以下内容:
```
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
```
保存并退出。
2. 安装 MongoDB。
执行以下命令安装 MongoDB:
```
sudo yum install mongodb-org -y
```
3. 配置 MongoDB。
打开 MongoDB 的配置文件:
```
sudo vim /etc/mongod.conf
```
在文件中找到和修改以下内容:
- bindIp
:绑定的 IP 地址。默认为 127.0.0.1
,即本地访问,如果需要远程访问需要将其改为 0.0.0.0
。
- port
:端口号。默认为 27017
,根据实际需要修改。
保存并退出。
4. 启动 MongoDB。
执行以下命令启动 MongoDB:
```
sudo systemctl start mongod
```
5. 设置 MongoDB 为系统服务。
执行以下命令将 MongoDB 设置为系统服务:
```
sudo systemctl enable mongod
```
可以使用以下命令检查服务的状态:
```
sudo systemctl status mongod
```
6. 登录 MongoDB。
使用以下命令登录 MongoDB:
```
mongo
```
可以使用以下命令检查 MongoDB 的版本:
```
db.version()
```
如果成功安装 MongoDB,则应该输出 MongoDB 的版本号。
以上就是在 CentOS 7 上安装部署 MongoDB 的详细步骤。
MongoDB设置密码
安装完MongoDB后,默认情况下没有密码,你可以直接登录MongoDB开始使用。不过,在生产环境中,强烈建议配置MongoDB的安全性设置,例如启用身份验证等。
如果你需要设置管理员账户并为其设置密码,可以按如下步骤进行:
1. 使用mongo shell登录到MongoDB。
2. 进入admin数据库:
```
use admin
```
3. 创建管理员账户:
```
db.createUser({ user: "admin", pwd: "yourpassword", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] })
(其中,“yourpassword”为你要设置的密码。)
【这是在MongoDB数据库中创建一个名为"admin"的用户,该用户的密码为"yourpassword", (密码可以自己进行更改)并授予该用户在所有数据库上执行用户管理操作的权限。具体来说,该用户被授予了"admin"数据库中的"userAdminAnyDatabase"角色,该角色允许用户在任何数据库上创建、修改和删除用户。】
```
【报出的信息是 这是一个 MongoDB 数据库的命令,表示成功添加了一个名为 "admin" 的用户,该用户具有在任何数据库上执行用户管理操作的权限。具体来说,该用户可以创建、修改和删除其他用户,以及授予和撤销其他用户的权限。】
4. 退出mongo shell,重启mongod进程:
```
sudo systemctl stop mongod
sudo systemctl start mongod
```
5. 再次使用mongo shell登录到MongoDB,使用以下命令验证登录:
```
mongo -u admin -p yourpassword --authenticationDatabase admin
```
【这是连接MongoDB数据库的命令,其中:
**- -u admin
表示使用用户名为 "admin" 的用户进行连接;
-p yourpassword
表示使用密码为 "yourpassword" 的用户进行连接;--authenticationDatabase admin
表示认证数据库为 "admin"。**
**这个命令会提示你输入密码,输入正确的密码后,就可以连接到MongoDB数据库了。】 **
以上是在MongoDB中创建并设置管理员账户的步骤,注意密码的安全性和复杂度。如果你没有设置管理员账户,那么默认情况下MongoDB是没有密码的。
MongoDB操作命令与说明
以下是MongoDB的常见命令操作及说明:
1. show dbs
显示所有数据库的列表。
2. use <dbname>
选择要使用的数据库。如果该数据库不存在,则会创建一个新数据库。
3. db.<collection>.find()
查找指定集合中的文档,例如:
```
db.users.find()
```
【首先要先创建文档才可以查到 首先完成第4点】
4. db.<collection>.insertOne()
在指定集合中插入一个新文档,例如:
```
db.users.insertOne( { name: "John", age: 30, city: "New York" } )
```
5. db.<collection>.updateOne()
更新指定集合中的一个文档,例如:
```
db.users.updateOne(
** { name: "John" },**
** { $set: { city: "San Francisco" } }**
)
```
【反馈信息表示:这是一个 MongoDB 数据库操作的返回结果,表示成功更新了一个文档,其中:
**- acknowledged
表示操作是否被确认,这里为 true 表示确认。
matchedCount
表示符合更新条件的文档数量,这里为 1 表示更新了一个文档。modifiedCount
表示实际被修改的文档数量,这里为 1 表示成功修改了一个文档。】**
6. db.<collection>.deleteOne()
删除指定集合中的一个文档,例如:
```
db.users.deleteOne( { name: "John" } )
```
【反馈信息表示:这是一个MongoDB数据库操作的返回结果。其中,"acknowledged"表示操作是否被确认,如果为true则表示操作被确认;"deletedCount"表示删除的文档数量。所以这个返回结果表示成功删除了一个文档。】
7. db.<collection>.count()
返回指定集合中文档的数量。
8. db.<collection>.drop()
** 【反馈信息true表示成功删除】**
删除指定集合。
9. db.createUser()
创建一个新的数据库用户。
例如,如果要创建一个用户名为 testuser
,密码为 testpassword
,角色为 readWrite
,所属数据库为 testdb
的用户,可以使用以下命令:
```
**db.createUser( { user: "testuser", pwd: "testpassword", roles: [ { role: "readWrite", db: "testdb" } ] } ) **
**``` **
注意,db.createUser()
只能在管理员权限下执行。如果你没有管理员权限,需要先使用管理员账号登录 MongoDB,然后再执行 db.createUser()
。
10. db.dropDatabase()
删除当前使用的数据库。
1. 打开 MongoDB shell,连接到要删除的数据库。
**2. 在 shell 中输入 use <database_name>
命令,切换到要删除的数据库。 **
**3. 输入 db.dropDatabase()
命令,删除当前连接的数据库。 **
注意:该命令会永久删除数据库及其所有数据,谨慎使用。
11. db.stats()
获取当前使用的数据库的状态信息。
以上是MongoDB的常见命令操作及说明,可以满足大多数日常工作所需。
配置文件说明
MongoDB的配置文件是文本文件,用于指定MongoDB运行时的配置信息。采用使用配置文件的方式启动MongoDB可以使得管理和配置MongoDB更为方便。
MongoDB的配置文件在启动时需要指定,通常可以使用mongod --config
命令来指定。
以下是MongoDB配置文件的常用参数及其说明:
- bindIp:绑定的IP地址,默认值为0.0.0.0
,表示可以连接所有的IP地址。可以通过指定一个特定的IP地址或者多个来限制MongoDB的访问。
- port:MongoDB监听的端口,默认端口号为27017。
- dbpath:MongoDB数据库使用的文件夹路径,默认路径为/data/db
。
- logpath:MongoDB日志文件的路径。
- logappend:如果设置为true,则MongoDB的日志文件使用追加模式。
- quiet:如果设置为true,则MongoDB不输出任何日志信息。
- pidfilepath:MongoDB进程ID文件路径。
- maxConns:MongoDB允许连接的最大数量,默认值为20000
。
- maxIncomingConnections:MongoDB允许同时打开的最大连接数,默认值为65536
。
- storage:MongoDB存储引擎,默认为wiredTiger
。
使用配置文件启动MongoDB的示例命令如下:
```
mongod --config /etc/mongod.conf
```
以上是MongoDB配置文件的常用参数及其说明。在实践中,需要根据具体的需求和硬件条件来调整参数值以实现最佳性能功效。
备份操作
MongoDB有多种备份方式,其中包括热备份和冷备份两种方式。
【使用时候 冷、热备份尽量不要同时使用】
1. 热备份
热备份是在MongoDB处于运行状态下进行备份的一种方式。具体步骤如下:
(1)使用mongodump命令导出MongoDB的备份数据。以下命令将备份数据导出到/data/backup
目录下:
```
mongodump --out /data/backup
```
(2)如果需要对导出的备份数据进行压缩,可以使用以下命令:
```
tar -czvf backup.tar.gz /data/backup
```
2. 冷备份
冷备份是在MongoDB处于新启动的状态下进行备份的一种方式。具体步骤如下:
(1)使用MongoDB的mongodump
命令导出MongoDB的备份数据。以下命令将备份数据导出到/data/backup
目录下:
```
mongodump --out /data/backup
```
(2)停止MongoDB服务:
```
sudo systemctl stop mongod
```
(3)使用tar命令将漏斗备份数据压缩成一个文件:
```
tar -czvf backup.tar.gz /data/backup
```
** 查看**
vim打开backup.tar.gz
(4)启动MongoDB服务:
```
sudo systemctl start mongod
```
备份是MongoDB管理的重要组成部分,定期备份MongoDB数据库是保证数据安全性的重要手段之一。对于生产系统,推荐使用自动化的备份解决方案。
还原操作
MongoDB使用mongorestore命令将备份数据还原到MongoDB中。以下是MongoDB备份数据还原的步骤:
(1)解压备份文件
首先,需要解压缩MongoDB备份文件。假设备份文件backup.tar.gz
被解压到了/data/backup
目录,使用以下命令解压备份文件:
```
tar -xzvf backup.tar.gz -C /data/backup
```
(2)停止MongoDB服务
在还原备份数据期间,需要停止MongoDB服务以避免出现意外。使用以下命令停止MongoDB服务:
```
sudo systemctl stop mongod
```
(3)使用mongorestore命令还原备份数据
使用mongorestore命令将备份数据还原到MongoDB中。以下命令将备份数据恢复到MongoDB:
```
mongorestore /data/backup
```
该命令将备份数据恢复到原来的集合和数据库中,也可以通过指定--db
参数将备份数据恢复到一个新的数据库中。
(4)重启MongoDB服务
还原备份数据后,重启MongoDB服务:
```
sudo systemctl start mongod
```
以上是将MongoDB备份数据还原的简单步骤。在实践中,备份和还原数据时需要谨慎操作,以确保数据的完整性和安全性。
MongoDB实际场景应用
你要构建一个在线零售商店,这个店铺需要处理会员数据、订单数据以及商品数据等。为了保存和管理这些数据,你可以使用MongoDB。
1. 设计数据模式
对于在线零售商店的数据,你可以设计三个MongoDB集合:
- 会员信息集合(Members):该集合包含了会员的基本信息,如姓名、电子邮件、地址、购买历史等。
- 订单信息集合(Orders):该集合包含所有订单的信息,包括订单编号、产品名称、单价、数量、运费等。
- 商品信息集合(Products):该集合包含所有销售商品的信息,如名称、描述、价格、库存量等。
你可以使用MongoDB的文档格式来存储每个集合中的数据。例如,对于会员信息集合,你可以使用以下文档格式:
```
{
** _id: ObjectId("5f096745c83ab13f9d887137"),**
** name: "John Smith",**
** email: "john.smith@email.com",**
** address: "123 Main St, Anytown USA",**
** purchase_history: [**
** {**
** item: "Product A",**
** date: ISODate("2022-01-01T10:00:00Z"),**
** price: 99.99**
** },**
** {**
** item: "Product B",**
** date: ISODate("2022-01-05T14:30:00Z"),**
** price: 49.99**
** }**
** ]**
}
```
对于订单信息集合和商品信息集合,你可以使用相似的文档格式来存储数据。
2. 插入数据
在你的在线零售商店开始运营之前,你需要向MongoDB中插入一些测试数据。你可以使用MongoDB的insertMany命令来批量插入数据集:
mongo shell 登录到mongdb下随后把一下命令敲到命令行
```
db.members.insertMany([
** {**
** name: "John Smith",**
** email: "john.smith@email.com",**
** address: "123 Main St, Anytown USA",**
** purchase_history: [**
** {**
** item: "Product A",**
** date: ISODate("2022-01-01T10:00:00Z"),**
** price: 99.99**
** },**
** {**
** item: "Product B",**
** date: ISODate("2022-01-05T14:30:00Z"),**
** price: 49.99**
** }**
** ]**
** },**
** {**
** name: "Jane Doe",**
** email: "jane.doe@email.com",**
** address: "456 Oak St, Another Town USA",**
** purchase_history: [**
** {**
** item: "Product C",**
** date: ISODate("2022-01-10T09:45:00Z"),**
** price: 149.99**
** },**
** {**
** item: "Product A",**
** date: ISODate("2022-01-15T11:30:00Z"),**
** price: 99.99**
** }**
** ]**
** }**
]);
db.orders.insertMany([
** {**
** order_number: "1001",**
** product_name: "Product A",**
** price: 99.99,**
** quantity: 2,**
** shipping: 5.99,**
** order_date: ISODate("2022-01-01T10:00:00Z")**
** },**
** {**
** order_number: "1002",**
** product_name: "Product B",**
** price: 49.99,**
** quantity: 3,**
** shipping: 7.99,**
** order_date: ISODate("2022-01-05T14:30:00Z")**
** }**
]);
db.products.insertMany([
** {**
** name: "Product A",**
** description: "A great product!",**
** price: 99.99,**
** stock: 100**
** },**
** {**
** name: "Product B",**
** description: "Another great product!",**
** price: 49.99,**
** stock: 50**
** },**
** {**
** name: "Product C",**
** description: "The greatest product of all!",**
** price: 149.99,**
** stock: 25**
** }**
]);
```
3. 查询数据
假设你要在你的在线零售商店中显示某个会员的购买历史记录,你可以使用以下查询来检索数据:
使用一下命令查看
```
db.members.find({ name: "John Smith"})
版权归原作者 so be it 所有, 如有侵权,请联系我们删除。