MongoDB 插入文档

在 MongoDB 中,db.collection.insert()方法用于将新文档添加或插入到数据库中的集合中。

一、MongoDB Insert命令

还有两种方法“db.collection.update()”方法和“db.collection.save()”方法用于相同目的。这些方法通过称为 upsert 的操作添加新文档。

Upsert 是一种操作,如果要修改的文档不存在,则执行更新现有文档或插入新文档。

语法:

>db.COLLECTION_NAME.insert(document)  

让我们举个例子来演示如何将文档插入到集合中。在这个例子中,我们将一个文档插入到一个名为 yiidian 的集合中。如果该集合当前不存在,此操作将自动创建一个集合。

二、MongoDB Insert命令 示例

db.yiidian.insert(  
   {  
     course: "java",  
     details: {  
        duration: "6 months",  
        Trainer: "Sonoo jaiswal"  
     },  
     Batch: [ { size: "Small", qty: 15 }, { size: "Medium", qty: 25 } ],  
     category: "Programming language"  
   }  
)  

成功插入文档后,该操作将返回一个 WriteResult 对象及其状态。

输出结果为:

WriteResult({ "nInserted" : 1 })

这里的nInserted字段指定插入的文档数。如果发生错误,则WriteResult将指定错误信息。

三、MongoDB 查询Insert的文档

如果插入成功,可以通过如下查询查看插入的文档。

db.yiidian.find()  

您将返回插入的文档。

输出结果为:

{ "_id" : ObjectId("56482d3e27e53d2dbc93cef8"), "course" : "java", "details" : 
{ "duration" : "6 months", "Trainer" : "Sonoo jaiswal" }, "Batch" : 
[ {"size" : "Small", "qty" : 15 }, { "size" : "Medium", "qty" : 25 } ],
 "category" : "Programming language" }

注意:这里的 ObjectId 值是由 MongoDB 自己生成的。它可能与显示的不同。

四、MongoDB插入多个文档

如果要在集合中插入多个文档,则必须将文档数组传递给 db.collection.insert() 方法。

创建文档数组

定义一个名为 Allcourses 的变量,其中包含要插入的文档数组。

var Allcourses =  
    [  
      {  
        Course: "Java",  
        details: { Duration: "6 months", Trainer: "Sonoo Jaiswal" },  
        Batch: [ { size: "Medium", qty: 25 } ],  
        category: "Programming Language"  
      },  
      {  
        Course: ".Net",  
        details: { Duration: "6 months", Trainer: "Prashant Verma" },  
        Batch: [ { size: "Small", qty: 5 }, { size: "Medium", qty: 10 }, ],  
        category: "Programming Language"  
      },  
      {  
        Course: "Web Designing",  
        details: { Duration: "3 months", Trainer: "Rashmi Desai" },  
        Batch: [ { size: "Small", qty: 5 }, { size: "Large", qty: 10 } ],  
        category: "Programming Language"  
      }  
    ];  

插入文档

将此 Allcourses 数组传递给 db.collection.insert() 方法以执行批量插入。

> db.yiidian.insert( Allcourses );  

成功插入文档后,这将返回一个带有状态的 BulkWriteResult 对象。

BulkWriteResult({
   "writeErrors" : [ ],
   "writeConcernErrors" : [ ],
   "nInserted" : 3,
   "nUpserted" : 0,
   "nMatched" : 0,
   "nModified" : 0,
   "nRemoved" : 0,
   "upserted" : [ ]
})

注意:这里的 nInserted 字段指定插入的文档数。如果在操作过程中出现任何错误,BulkWriteResult将指定该错误。

您可以使用以下查询检查插入的文档:

>db.yiidian.find()  

五、MongoDB 使用批量插入多个文档

在其最新版本的 MongoDB (MongoDB 2.6) 中,提供了一个 Bulk() API,可用于批量执行多个写入操作。

您应该按照以下步骤将一组文档插入到 MongoDB 集合中。

初始化批量操作生成器

首先为集合 javatpoint 初始化一个批量操作构建器。

var bulk = db.yiidian.initializeUnorderedBulkOp();  

此操作返回一个无序操作构建器,该构建器维护要执行的操作列表。

向批量对象添加插入操作

bulk.insert(  
   {  
     course: "java",  
     details: {  
        duration: "6 months",  
        Trainer: "Sonoo jaiswal"  
     },  
     Batch: [ { size: "Small", qty: 15 }, { size: "Medium", qty: 25 } ],  
     category: "Programming language"  
   }  
);  

执行批量操作

在批量对象上调用 execute() 方法以执行列表中的操作。

bulk.execute();  

成功插入文档后,此方法将返回一个BulkWriteResult对象及其状态。

BulkWriteResult({
   "writeErrors" : [ ],
   "writeConcernErrors" : [ ],
   "nInserted" : 1,
   "nUpserted" : 0,
   "nMatched" : 0,
   "nModified" : 0,
   "nRemoved" : 0,
   "upserted" : [ ]
})

这里的 nInserted 字段指定插入的文档数。如果在操作过程中出现任何错误,BulkWriteResult将指定该错误。

热门文章

优秀文章