
如何在MongoDB中创建数据库和集合?
- 来源:本站
- 编辑: 超级管理员
- 时间:2025-05-22 10:37:27
- 阅读1次
在 MongoDB 中创建数据库和集合的操作非常灵活,因为 MongoDB 采用懒创建机制 —— 即数据库和集合在首次存储数据时才会被实际创建。以下是详细步骤和示例:
一、连接到 MongoDB
bash
# 本地连接(默认端口27017)
mongo
# 带认证的连接(需替换用户名、密码和认证数据库)
mongo -u "username" -p "password" --authenticationDatabase "admin"
# URI格式连接
mongo "mongodb://username:password@localhost:27017/admin"
二、创建数据库
javascript
// 切换到数据库(不存在则在首次写入时创建)
use mydatabase
// 验证当前数据库
db.getName() // 返回 "mydatabase"
三、创建集合
1. 隐式创建(推荐)
在向不存在的集合插入数据时,MongoDB 会自动创建集合:
javascript
// 向users集合插入文档
db.users.insertOne({ name: "Alice", age: 30 })
// 查看所有集合
show collections // 输出: users
2. 显式创建(自定义选项)
使用createCollection()方法创建带参数的集合:
javascript
// 创建固定大小集合(100MB,最多1000个文档)
db.createCollection("logs", {
capped: true,
size: 100 * 1024 * 1024,
max: 1000
})
// 创建带验证规则的集合
db.createCollection("products", {
validator: {
$jsonSchema: {
bsonType: "object",
required: ["name", "price"],
properties: {
name: { type: "string" },
price: { type: "number", minimum: 0 }
}
}
}
})
四、验证创建结果
javascript
// 查看所有数据库
show dbs // 注意:空数据库不会显示
// 查看当前数据库的集合
show collections
// 查看集合状态
db.users.stats()
// 查看集合文档数
db.users.countDocuments()
五、注意事项
空数据库不会显示:
只有当数据库包含至少一个集合,且集合包含至少一个文档时,show dbs才会显示该数据库。
集合命名规则:
不能包含空格、.、$、空字符
不能以system.开头(系统保留前缀)
建议使用小写字母和下划线(如user_profiles)
集合选项参数:
capped: 固定大小集合,支持高效的插入和查询
validator: 文档验证规则,确保数据结构一致性
autoIndexId: 是否自动创建_id索引(默认true)
六、示例:完整工作流
javascript
// 切换到mydb数据库(不存在则后续创建)
use mydb
// 创建用户集合并插入文档
db.users.insertMany([
{ _id: 1, name: "Alice", role: "admin" },
{ _id: 2, name: "Bob", role: "user", age: 25 }
])
// 创建订单集合并设置验证规则
db.createCollection("orders", {
validator: {
$jsonSchema: {
bsonType: "object",
required: ["user_id", "items", "total"],
properties: {
user_id: { bsonType: "int" },
items: {
bsonType: "array",
items: {
bsonType: "object",
required: ["product", "price", "quantity"],
properties: {
product: { bsonType: "string" },
price: { bsonType: "double" },
quantity: { bsonType: "int" }
}
}
},
total: { bsonType: "double" }
}
}
}
})
// 插入符合验证规则的订单
db.orders.insertOne({
user_id: 1,
items: [
{ product: "Laptop", price: 999.99, quantity: 1 },
{ product: "Mouse", price: 29.99, quantity: 2 }
],
total: 1059.97
})
七、常见问题
如何删除数据库 / 集合?
javascript
// 删除当前数据库
db.dropDatabase()
// 删除集合
db.users.drop()
如何查看集合选项?
javascript
db.getCollectionInfos()
如何修改集合选项?
javascript
// 修改固定集合大小(仅支持capped集合)
db.runCommand({ convertToCapped: "users", size: 1000000 })
- 全量备份和增量备份如何配合使用···
2025-05-24
- 哪些情况下适合选择全量备份?
2025-05-24
- 全量备份和增量备份的备份频率应···
2025-05-24
- 物理备份和逻辑备份的备份方式对···
2025-05-23
- 物理备份和逻辑备份的恢复速度受···
2025-05-23
- 物理备份和逻辑备份的恢复速度如···
2025-05-23
- 面向未来的高可用境外服务器架构···
2024-08-26
- 跨境电商成功案例之优秀外国服务···
2024-08-22
- 从成本效益角度分析境外服务器的···
2024-08-17
- 如何规避使用外国服务器的风险问···
2024-08-16
- 搭建安全稳定的境外网站:首选外···
2024-08-19
- 针对中小企业的境外服务器配置指···
2024-08-22