简介
本全面教程将探讨在强大且灵活的 NoSQL 数据库 MongoDB 中插入文档的基本技术。无论你是初学者还是有经验的开发者,都将学习如何使用各种插入方法和最佳实践,高效地向 MongoDB 集合中添加数据。
本全面教程将探讨在强大且灵活的 NoSQL 数据库 MongoDB 中插入文档的基本技术。无论你是初学者还是有经验的开发者,都将学习如何使用各种插入方法和最佳实践,高效地向 MongoDB 集合中添加数据。
在 MongoDB 中,文档是数据存储的基本单元,类似于关系型数据库中的行,但结构更加灵活。与传统表不同,MongoDB 文档以 BSON(二进制 JSON)格式存储,这允许更复杂和嵌套的数据表示。
MongoDB 文档由字段 - 值对组成,具有以下关键特征:
以下是一个典型的 MongoDB 文档示例:
{
"_id": ObjectId("5f8d7a3b9d3b2a1b1c9d1e1f"),
"username": "labexuser",
"email": "[email protected]",
"age": 28,
"skills": ["Python", "MongoDB", "Docker"],
"profile": {
"country": "新加坡",
"experience": 5
}
}
约束 | 描述 |
---|---|
最大大小 | 16MB |
字段名限制 | 不能以 '$' 开头或包含 '.' |
唯一标识符 | 每个文档都有一个唯一的 _id 字段 |
MongoDB 支持多种数据类型:
要创建文档,可以使用以下方法:
insertOne()
insertMany()
save()
Ubuntu 22.04 上的示例:
## 连接到 MongoDB
## 切换到一个数据库
## 插入一个文档
通过了解这些文档基础,在你的实验(LabEx)学习之旅中,你将为有效地使用 MongoDB 做好充分准备。
MongoDB 提供了几种将文档插入集合的方法:
insertOne()
方法将单个文档插入集合:
## 连接到 MongoDB
## 切换到数据库
## 插入单个文档
insertMany()
方法允许同时插入多个文档:
## 插入多个文档
类型 | 行为 | 性能 |
---|---|---|
有序 | 遇到第一个错误即停止 | 较慢 |
无序 | 遇到错误后继续 | 较快 |
无序插入示例:
db.users.insertMany(
[文档],
{ ordered: false }
)
## 使用 replaceOne 并设置 upsert
db.users.bulkWrite([
{
insertOne: {
document: {
"username": "bulk_user1",
"email": "[email protected]"
}
}
},
{
updateOne: {
filter: { "username": "现有用户" },
update: { $set: { "email": "[email protected]" } }
}
}
])
try {
db.users.insertOne(文档)
} catch (error) {
print("插入失败: " + error.message)
}
通过掌握这些插入技术,在你的实验(LabEx)学习过程中,你将能够有效地管理 MongoDB 集合中的数据。
批量写入操作允许在单个请求中执行多个写入操作:
db.users.bulkWrite([
{
insertOne: {
document: {
"username": "labex_user1",
"email": "[email protected]"
}
}
},
{
updateOne: {
filter: { "username": "现有用户" },
update: { $set: { "status": "active" } }
}
}
])
写入关注 | 描述 | 性能 |
---|---|---|
w: 0 | 不进行确认 | 最快 |
w: 1 | 确认主节点 | 平衡 |
w: majority | 多数副本确认 | 最可靠 |
db.users.insertOne(
{ "username": "labex_user" },
{
writeConcern: {
w: "majority",
wtimeout: 5000
}
}
)
db.users.updateOne(
{ "username": "labex_user" },
{
$set: { "email": "[email protected]" },
$inc: { "login_count": 1 }
}
)
插入或更新操作将插入和更新结合起来:
db.users.updateOne(
{ "username": "labex_user" },
{
$set: {
"email": "[email protected]",
"last_login": new Date()
}
},
{ upsert: true }
)
db.createCollection("users", {
validator: {
$jsonSchema: {
bsonType: "object",
required: ["username", "email"],
properties: {
username: {
bsonType: "string",
description: "必须是字符串且为必填项"
},
email: {
bsonType: "string",
pattern: "^.+@labex\\.io$",
description: "必须是有效的 LabEx 电子邮件"
}
}
}
}
})
try {
const result = db.users.insertMany(文档, { ordered: false });
print("插入了 " + result.insertedCount + " 个文档");
} catch (error) {
print("批量插入遇到错误: " + error.message);
print("部分插入的文档数: " + error.result.nInserted);
}
db.performance_logs.insertOne({
"timestamp": new Date(),
"server": "labex-server-01",
"cpu_usage": 65.5,
"memory_usage": 4096
})
通过掌握这些高级插入策略,在你的实验(LabEx)学习过程中,你将能够熟练地管理 MongoDB 中的复杂数据场景。
通过掌握 MongoDB 文档插入技术,开发者能够在 NoSQL 数据库中有效地管理和操作数据。本教程深入介绍了基本和高级插入策略,使你能够在 MongoDB 中自信且精确地处理复杂的数据插入场景。