MongoDB插入文档(3中方法)

 
前面我们已经介绍了如何在 MongoDB 中创建数据库创建集合,接下来我们再来介绍一下如何在集合中插入文档。文档是 MongoDB 中数据的基本单位,由 BSON 格式(一种计算机数据交换格式,类似于 JSON)的键/值对组成。

insert() 与 save() 方法

您可以使用 MongoDB 中的 insert() 或 save() 方法向集合中插入文档,语法如下:

db.collection_name.insert(document)
db.collection_name.save(document)

语法说明如下:
  • save():如果 _id 主键存在则更新数据,如果不存在就插入数据。不过该方法在新版本的 MongoDB 中已废弃,您可以使用 insertOne() 或 replaceOne() 方法来代替;
  • insert(): 若插入的数据主键已经存在,则会抛 org.springframework.dao.DuplicateKeyException 异常,并提示主键重复,不保存当前数据。

【示例】使用 insert() 方法向集合中插入文档:
> db.user.insert([
... {
... name:"张三",
... phone:"15012345678"
... },{
... name:"李四",
... phone:"18687654321"
... },{
... name:"王五",
... phone:"13100001111"
... }
... ])
BulkWriteResult({
        "writeErrors" : [ ],
        "writeConcernErrors" : [ ],
        "nInserted" : 3,
        "nUpserted" : 0,
        "nMatched" : 0,
        "nModified" : 0,
        "nRemoved" : 0,
        "upserted" : [ ]
})
文档插入成功后您可以使用 find() 方法来查看集合中文档的内容,如下所示:
> db.user.find()
{ "_id" : ObjectId("6030d907d029695c0c340c43"), "name" : "张三", "phone" : "15012345678" }
{ "_id" : ObjectId("6030d907d029695c0c340c44"), "name" : "李四", "phone" : "18687654321" }
{ "_id" : ObjectId("6030d907d029695c0c340c45"), "name" : "王五", "phone" : "13100001111" }
文档中 _id 为主键 ID,它在每个文档中都是唯一的,在插入文档时,如果不指定 _id,MongoDB 则会为此文档自动分配一个唯一的 _id,当然您也可以手动定义 _id 的值。

insertOne() 方法

insert() 方法可以同时插入多个文档,但如果您只需要将一个文档插入到集合中的话,可以使用 insertOne() 方法,该方法的语法格式如下:

db.collection_name.insertOne(document)

【示例】使用 insertOne() 方法向集合中插入一个文档:
> db.user.insertOne({
... title:"编程帮",
... url:"www.biancheng.net",
... course:"MongoDB教程"
... })
{
        "acknowledged" : true,
        "insertedId" : ObjectId("6030d6c4d029695c0c340c42")
}
> db.user.find()
{ "_id" : ObjectId("6030d6c4d029695c0c340c42"), "title" : "编程帮", "url" : "www.biancheng.net", "course" : "MongoDB教程" }

insertMany() 方法

与 insert() 方法相同,您可以使用 insertMany() 方法向集合中插入多个文档,但在使用 insertMany() 方法时您需要向方法中传递一个文档数组,如下例所示:
> db.user.insertMany([
... {
... name:"张三",
... phone:"15012345678"
... },{
... name:"李四",
... phone:"18611112222"
... },{
... name:"王五",
... phone:"13166668888"
... }
... ])
{
        "acknowledged" : true,
        "insertedIds" : [
                ObjectId("6030dbf2d029695c0c340c46"),
                ObjectId("6030dbf2d029695c0c340c47"),
                ObjectId("6030dbf2d029695c0c340c48")
        ]
}
> db.user.find()
{ "_id" : ObjectId("6030dbf2d029695c0c340c46"), "name" : "张三", "phone" : "15012345678" }
{ "_id" : ObjectId("6030dbf2d029695c0c340c47"), "name" : "李四", "phone" : "18611112222" }
{ "_id" : ObjectId("6030dbf2d029695c0c340c48"), "name" : "王五", "phone" : "13166668888" }