1. 简介
MongoDB是一个开源、高性能、无模式(no-sql)文档数据库。在MongoDB中,数据是以文档(document)的形式存储的,可以存储各种类型的数据,比如字符串、数字、数组等,还支持嵌套式结构的存储方式,这使得MongoDB成为了一种非常灵活和强大的数据库。
1.1 CRUD操作
在MongoDB中,我们可以对数据进行CRUD操作,即增加(Create)、读取(Retrieve)、更新(Update)和删除(Delete)。这些操作很容易理解,下面我们将结合一个实例详细介绍MongoDB中的插入操作。
2. 插入数据
2.1 插入单个文档
在MongoDB中,我们可以使用insertOne()方法向集合中插入单个文档。
语法:
db.collection.insertOne(
{ field1: value1, field2: value2, ... }
)
其中,db.collection表示要插入文档的集合名称,{}里面是要插入的文档内容,格式为键值对形式。
比如,我们要向一个叫做users的集合中插入一条数据,内容如下:
{
name: "Bob",
age: 25,
email: "bob@example.com"
}
插入操作如下:
db.users.insertOne(
{
name: "Bob",
age: 25,
email: "bob@example.com"
}
)
如果数据插入成功,返回结果如下:
{
"acknowledged" : true,
"insertedId" : ObjectId("5f4b68837c7111bb9cdca879")
}
其中,acknowledged为真表示操作成功,insertedId表示插入的文档的唯一标识。
2.2 插入多个文档
在MongoDB中,我们也可以使用insertMany()方法向一个集合中插入多个文档。
语法:
db.collection.insertMany(
[
{ field1: value1, field2: value2, ... },
{ field1: value1, field2: value2, ... },
...
]
)
其中,db.collection表示要插入文档的集合名称,[]里面可以包含一个或多个文档,每个文档的格式为键值对形式。
比如,我们要向一个叫做users的集合中插入两条数据,内容分别如下:
{
name: "Alice",
age: 30,
email: "alice@example.com"
},
{
name: "David",
age: 35,
email: "david@example.com"
}
插入操作如下:
db.users.insertMany(
[
{
name: "Alice",
age: 30,
email: "alice@example.com"
},
{
name: "David",
age: 35,
email: "david@example.com"
}
]
)
如果数据插入成功,返回结果如下:
{
"acknowledged" : true,
"insertedIds" : [
ObjectId("5f4b69027c7111bb9cdca87a"),
ObjectId("5f4b69027c7111bb9cdca87b")
]
}
其中,acknowledged为真表示操作成功,insertedIds表示插入的每个文档的唯一标识。
2.3 插入验证
MongoDB提供了插入验证的功能,即在插入文档时,如果文档不符合规定的格式,将会抛出异常。在实际应用中,这个功能可以帮助我们避免一些在写入数据时出现的错误。
比如,我们要向一个叫做users的集合中插入一条数据,但是我们限制了文档中必须包含name和age两个字段:
db.createCollection("users", {
validator: {
$and: [
{ name: { $type: "string" } },
{ age: { $type: "int" } }
]
}
})
插入操作如下,其中缺少了age字段:
db.users.insertOne(
{
name: "Bob",
email: "bob@example.com"
}
)
插入验证结果如下:
WriteError({
"index" : 0,
"code" : 121,
"errmsg" : "Document failed validation",
"op" : {
"_id" : ObjectId("5f4b6d3d2a583a44302bb8ff"),
"name" : "Bob",
"email" : "bob@example.com"
}
})
可见,插入操作失败,抛出了异常,提示文档验证失败。
3. 总结
本文介绍了MongoDB中的插入操作。我们学习了如何向一个集合中插入单个文档和多个文档,并且了解了插入验证的功能。在实际编程中,我们需要根据不同的需求和情况进行灵活使用,这将极大地提高我们的编程效率。