MongoDB 创建、删除数据库

MongoDB 创建数据库

在MongoDB中,数据库的创建是一个简单的过程,当你首次向MongoDB中插入数据时,如果数据库不存在,MongoDB会自动创建它。

我们只需选择一个数据库名称,并开始向其中插入文档即可。

语法

当你使用 use 命令来指定一个数据库时,如果该数据库不存在,MongoDB将自动创建它。

MongoDB 创建数据库的语法格式如下:

use DATABASE_NAME

如果数据库不存在,则创建数据库,否则切换到指定数据库。

实例

以下实例我们创建了数据库 runoob:

> use runoob
switched to db runoob
> db
runoob
> 

执行 use runoob 命令后,MongoDB 将创建名为 runoob 的新数据库。此时,你可以开始在这个数据库中创建集合和插入文档。

如果你想查看所有数据库,可以使用 show dbs 命令:

> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
> 

可以看到,我们刚创建的数据库 runoob 并不在数据库的列表中, 要显示它,我们需要向 runoob 数据库插入一些数据。

> db.runoob.insertOne({"name":"菜鸟教程"})
WriteResult({ "nInserted" : 1 })
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
runoob  0.000GB

创建集合

创建数据库后,通常需要在其中创建集合(collections),以存储文档(documents)。

集合类似于关系数据库中的表,以下是创建集合的步骤:

### MongoDB 创建数据库模块与知识整理 MongoDB 是一个基于文档的 NoSQL 数据库,其数据库和集合在使用前无需显式创建,而是通过插入数据或执行某些操作时自动创建。这种机制简化了数据库初始化流程,并提高了灵活性。 #### 自动创建数据库与集合 MongoDB 中的数据库和集合具有“惰性创建”特性,即只有在首次对某个数据库进行写入操作(如插入文档)时,该数据库及其对应的集合才会被实际创建。例如,当连接到一个不存在的数据库并执行插入操作时,MongoDB 会自动创建数据库及所需集合: ```javascript use myNewDB db.myCollection.insertOne({ name: "Test Document" }) ``` 上述命令中,如果 `myNewDB` 尚未存在,则会在插入文档时创建数据库和 `myCollection` 集合。 #### 使用 Mongoose 连接并隐式创建数据库 Mongoose 是一个基于 Node.js 的对象数据建模(ODM)库,用于简化与 MongoDB 的交互。它通过连接字符串指定数据库名称,若该数据库不存在,则在首次写入数据时自动创建: ```javascript const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost:27017/myMongooseDB', { useNewUrlParser: true, useUnifiedTopology: true }); ``` 在此示例中,若 `myMongooseDB` 数据库尚未存在,将在定义模型并保存文档后自动创建[^1]。 #### 使用 PyMongo 显式插入数据以创建数据库 PyMongo 是 Python 中用于操作 MongoDB 的官方驱动程序。通过插入数据可以触发数据库和集合的创建过程。以下代码展示了如何连接 MongoDB 并插入一条记录来创建数据库和集合: ```python from pymongo import MongoClient client = MongoClient("localhost", 27017) db = client["myPyMongoDB"] collection = db["myCollection"] collection.insert_one({"key": "value"}) ``` 在该示例中,若 `myPyMongoDB` 数据库不存在,则会在插入文档时自动创建[^2]。 #### 数据库管理操作 除了通过写入操作创建数据库外,MongoDB 还提供了管理命令用于查看、修复或删除数据库。例如,使用 `db.stats()` 可以查看当前数据库的状态信息: ```javascript use myNewDB db.stats() ``` 此外,可使用 `db.dropDatabase()` 删除整个数据库: ```javascript use myNewDB db.dropDatabase() ``` 这些命令可用于维护数据库结构和清理无用数据。 #### 安全配置与权限控制 为了保障数据库的安全性,在创建数据库后应配置适当的用户权限。MongoDB 支持基于角色的访问控制(RBAC),允许为特定数据库分配只读、读写等不同权限的角色。例如,为新创建数据库添加只读用户: ```javascript use myNewDB db.createUser({ user: "readOnlyUser", pwd: "securePassword", roles: [{ role: "read", db: "myNewDB" }] }) ``` 此命令为 `myNewDB` 数据库创建了一个具有只读权限的用户,确保未经授权的操作无法修改数据[^4]。 #### 备份与导出数据库 MongoDB 提供了 `mongoexport` 工具用于导出数据库中的数据。从 MongoDB 4.4 开始,该工具作为独立组件发布,版本号采用单独的编号规则。例如,导出 `myNewDB` 中的集合数据为 JSON 文件: ```bash mongoexport --db=myNewDB --collection=myCollection --out=exported_data.json ``` 该命令将 `myCollection` 集合的内容导出至本地文件,便于备份或迁移[^3]。 #### 更新与删除文档 在数据库创建完成后,通常需要执行更新和删除操作。MongoDB 提供了 `updateMany()` 和 `deleteMany()` 等方法用于批量处理文档。例如,更新符合条件的所有文档: ```javascript var filterStr = { press: '人民邮电出版社' }; var updateStr = { $set: { "url": "http://www.ptress.com.cn" } }; db.collection('bookinfo').updateMany(filterStr, updateStr, function(err, docs) { if (err) throw err; console.log("更改文档数为:" + docs.result.nModified); }); ``` 同样,可以使用 `deleteMany()` 删除多个符合条件的文档: ```javascript db.collection('bookinfo').deleteMany({ field: "obsolete" }, function(err, result) { if (err) throw err; console.log("删除文档数为:" + result.deletedCount); }); ``` 以上操作支持对已创建数据库中的数据进行动态调整[^4]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋进学堂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值