MongoDB 插入文档
插入文档
在本章中,我们将学习如何在MongoDB集合中插入文档。
insert()方法
要将数据插入MongoDB集合,您需要使用MongoDB的insert()或save()方法。
语法
>db.COLLECTION_NAME.insert(document)
示例
db.users.insert({
_id : ObjectId("507f191e810c19729de860ea"),
title: "MongoDB Overview",
description: "MongoDB is no sql database",
by: "蝴蝶教程",
url: "http://www.jc2182.com",
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
})
WriteResult({ "nInserted" : 1 })
users集合如果不存在会自动创建。
在插入的文档中,如果不指定_id参数,则MongoDB会为此文档分配一个唯一的ObjectId。_id是集合中每个文档唯一的12字节十六进制数。12个字节划分如下-
_id: ObjectId(4 字节 时间戳, 3 字节 机器id, 2 字节 进程id, 3 字节自增)
您还可以将文档数组传递到insert()方法中,如下所示:
db.post.insert([
{
title: "MongoDB Overview",
description: "MongoDB is no SQL database",
by: "蝴蝶教程",
url: "http://www.jc2182.com",
tags: ["mongodb", "database", "NoSQL"],
likes: 100
},
{
title: "NoSQL Database",
description: "NoSQL database doesn't have tables",
by: "蝴蝶教程",
url: "http://www.jc2182.com",
tags: ["mongodb", "database", "NoSQL"],
likes: 20,
comments: [
{
user:"user1",
message: "My first comment",
dateCreated: new Date(2013,11,10,2,35),
like: 0
}
]
}
])
要插入文档,您也可以使用db.post.save(document)。如果未在文档中指定_id,则save()方法将与insert()方法相同。如果指定_id,则它将替换save()方法中指定的包含_id的文档的整个数据。
insertOne()方法
如果只需要将一个文档插入到集合中,则可以使用此方法。
语法
>db.COLLECTION_NAME.insertOne(document)
示例
下面的示例创建一个名为empDetails的新集合,并使用insertOne()方法插入一个文档。
db.createCollection("empDetails")
db.empDetails.insertOne(
{
First_Name: "Radhika",
Last_Name: "Sharma",
Date_Of_Birth: "2019-12-26",
e_mail: "radhika_sharma.123@gmail.com",
phone: "9848022338"
})
insertMany()方法
您可以使用insertMany()方法插入多个文档。对于此方法,您需要传递一个文档数组。
以下示例使用insertMany()方法将三个不同的文档插入empDetails集合。
db.empDetails.insertMany(
[
{
First_Name: "Radhika",
Last_Name: "Sharma",
Date_Of_Birth: "2019-09-26",
e_mail: "radhika_sharma.123@qq.com",
phone: "9000012345"
},
{
First_Name: "Rachel",
Last_Name: "Christopher",
Date_Of_Birth: "2018-02-16",
e_mail: "Rachel_Christopher.123@qq.com",
phone: "9000054321"
},
{
First_Name: "Fathima",
Last_Name: "Sheik",
Date_Of_Birth: "2016-02-16",
e_mail: "Fathima_Sheik.123@qq.com",
phone: "9000054321"
}
]
)