注册

MongoDB插入数据的3种方法

MongoDB插入数据通常有3种方法,它们分别是使用insert()函数,使用save()函数以及使用bulkWrite()函数。下面我们将为大家详细讲解这3种方法以及示例说明。

insert()函数插入数据

insert()函数是 MongoDB 中最基本和常见的插入方法之一。下面是insert()函数的语法和参数:

db.collection.insert({
   "name":"John",
   "age":30,
   "email":"john@example.com"
})

其中,db.collection代表要插入数据的集合;{...}则是要插入的数据,数据是以键值对的方式表示的。

下面是一个简单的示例,演示如何使用insert()函数插入一条数据到 mycollection 集合中:

> use mydatabase
switched to db mydatabase
> db.mycollection.insert({
...   "name":"Tom",
...   "age":25,
...   "email":"tom@example.com"
... })
WriteResult({ "nInserted" : 1 })

其中,我们先使用 use 命令选择了 mydatabase 数据库,然后在 mycollection 集合中插入了一条数据。insert()函数会返回WriteResult对象,对象中包含了插入操作的结果信息。在本例中,因为插入成功了一条数据,所以结果信息为 {"nInserted": 1}。如果插入失败,则会返回相应的错误信息。

save()函数插入数据

save()函数也是一个常用的插入方法。该方法首先会查找是否存在有符合查询条件的数据,若存在则会更新该条数据,否则则会插入一条新的数据。下面是save()函数的语法和参数:

db.collection.save({
   "name":"John",
   "age":30,
   "email":"john@example.com"
})

其中,db.collection代表要插入数据的集合;{...}则是要插入/更新的数据,数据是以键值对的方式表示的。

下面是一个简单的示例,演示如何使用save()函数插入一条数据到 mycollection 集合中:

> use mydatabase
switched to db mydatabase
> db.mycollection.save({
...   "name":"Tom",
...   "age":25,
...   "email":"tom@example.com"
... })
WriteResult({ "nInserted" : 1 })

在本例中,save()函数会将要插入的数据与已经存在的数据进行比较,由于 mydatabase.mycollection 中没有 name 为 Tom 的数据,所以 save() 函数会将新的数据插入到集合中,同时返回 {"nInserted": 1}

bulkWrite()函数插入数据

最后一个常用的插入方法是 bulkWrite() 函数,该方法可以一次性插入多条数据,并且支持批量操作。下面是bulkWrite()函数的语法和参数:

db.collection.bulkWrite([
   { insertOne : { "name" : "John", "age" : 30, "email" : "john@example.com" } },
   { insertOne : { "name" : "Tom", "age" : 25, "email" : "tom@example.com" } }
])

其中,db.collection代表要插入数据的集合;[...]中的数据是要插入的数据,数据是以insertOne对象的方式表示的。

下面是一个简单的示例,演示如何使用bulkWrite()函数插入多条数据到 mycollection 集合中:

> use mydatabase
switched to db mydatabase
> db.mycollection.bulkWrite([
...     { insertOne : { "name" : "John", "age" : 30, "email" : "john@example.com" } },
...     { insertOne : { "name" : "Tom", "age" : 25, "email" : "tom@example.com" } }
... ])
{
        "acknowledged" : true,
        "insertedIds" : [
                ObjectId("611fe142cc5a9d80b9a1c929"),
                ObjectId("611fe142cc5a9d80b9a1c92a")
        ]
}

在本例中,bulkWrite()函数会一次性插入两条数据,同时返回插入的结果信息。这里需要注意的是,bulkWrite()函数中的 insertOne 对象表示插入一条数据,如果要插入多条数据,需要在 [...] 中添加相应的 insertOne 对象即可。