本章节中我们将向大家介绍如何将数据插入到 MongoDB 的集合中。
文档的数据结构和 JSON 基本一样。
所有存储在集合中的数据都是 BSON 格式。
BSON 是一种类似 JSON 的二进制形式的存储格式,是 Binary JSON 的简称。
常用的插入文档方法包括:
- db.collection.insertOne():插入单个文档
- db.collection.insertMany():插入多个文档
- db.collection.save():类似于 insertOne()。如果文档存在,则该文档会被更新;如果文档不存在,则会插入一个新文档。
1、insertOne()
insertOne() 方法用于在集合中插入单个文档。
db.collection.insertOne(document, options)
- document:要插入的单个文档。
- options(可选):一个可选参数对象,可以包含 writeConcern 和 bypassDocumentValidation 等。
实例
db.myCollection.insertOne({
name: "Alice",
age: 25,
city: "New York"
});
返回结果:
{
"acknowledged": true,
"insertedId": ObjectId("60c72b2f9b1d8b5a5f8e2b2d")
}
2、insertMany()
insertMany() 方法用于在集合中插入多个文档。
db.collection.insertMany(documents, options)
- documents:要插入的文档数组。
- options(可选):一个可选参数对象,可以包含 ordered、writeConcern 和 bypassDocumentValidation 等。
db.myCollection.insertMany([
{ name: "Bob", age: 30, city: "Los Angeles" },
{ name: "Charlie", age: 35, city: "Chicago" }
]);
返回结果:
{
"acknowledged": true,
"insertedIds": [
ObjectId("60c72b2f9b1d8b5a5f8e2b2e"),
ObjectId("60c72b2f9b1d8b5a5f8e2b2f")
]
}
3、db.collection.save()
save() 方法在插入文档时表现得类似于 insertOne()。
如果文档包含 _id 字段且已存在,则该文档会被更新;如果文档不包含 _id 字段或 _id 不存在,则会插入一个新文档。
db.collection.save(document, options)
- document:要保存的文档。
- options(可选):一个可选参数对象,可以包含 writeConcern 等。
db.myCollection.save({
_id: ObjectId("60c72b2f9b1d8b5a5f8e2b2d"),
name: "David",
age: 40,
city: "San Francisco"
});
插入文档时的选项
这些方法的 options 参数通常可以包含以下选项:
- ordered(仅适用于 insertMany):布尔值。如果为 true,则按顺序插入文档,在遇到错误时停止;如果为 false,则尝试插入所有文档,即使遇到错误也继续。默认值为 true。
- writeConcern:指定写操作的确认级别。
- bypassDocumentValidation:布尔值。如果为 true,则忽略集合的文档验证规则。
实例
插入单个文档:
db.myCollection.insertOne({
name: "Alice",
age: 25,
city: "New York"
});
插入多个文档:
db.myCollection.insertMany([
{ name: "Bob", age: 30, city: "Los Angeles" },
{ name: "Charlie", age: 35, city: "Chicago" }
]);
保存文档:
db.myCollection.save({
_id: ObjectId("60c72b2f9b1d8b5a5f8e2b2d"),
name: "David",
age: 40,
city: "San Francisco"
});
通过这些方法,你可以灵活地将文档插入到 MongoDB 集合中,以满足各种应用场景的需求。
以下文档可以存储在 MongoDB 的 runoob 数据库 的 col 集合中:
>db.col.insert({title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
by: '菜鸟教程',
url: 'http://www.runoob.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
})
以上实例中 col 是我们的集合名,如果该集合不在该数据库中, MongoDB 会自动创建该集合并插入文档。
查看已插入文档:
> db.col.find()
{ "_id" : ObjectId("56064886ade2f21f36b03134"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
>
我们也可以将数据定义为一个变量,如下所示:
> document=({title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
by: '菜鸟教程',
url: 'http://www.runoob.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
});
执行后显示结果如下:
{
"title" : "MongoDB 教程",
"description" : "MongoDB 是一个 Nosql 数据库",
"by" : "菜鸟教程",
"url" : "http://www.runoob.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}
执行插入操作:
> db.col.insert(document)
WriteResult({ "nInserted" : 1 })
>
插入文档你也可以使用 db.col.save(document) 命令。如果不指定 _id 字段 save() 方法类似于 insert() 方法。如果指定 _id 字段,则会更新该 _id 的数据。