この章では、mongoシェルを使用してMongoDBにドキュメントデータを挿入する方法を紹介します。

1つのドキュメントを挿入する

db.collection.insertOne() メソッドを使用して、コレクションに1つのドキュメントを挿入します。

ドキュメントが _id フィールドを指定していない場合、MongoDBは _id フィールドのために一意の ObjectId を自動的に生成します。

注意: ObjectId は、MongoDB内蔵のユニークなID生成器であり、ID生成に使用されます。

例: inventoryコレクションにドキュメントを挿入します:

db.inventory.insertOne(
   { item: "canvas", qty: 100, tags: ["cotton"], size: { h: 28, w: 35.5, uom: "cm" } }
)

戻り値:

{
	"acknowledged" : true,
	"insertedId" : ObjectId("609bf11dfc901345cafc438a")
}

挿入が成功した場合、プライマリキーが返されます。insertedId フィールドはMongoDBが自動的に生成した一意のIDです。inventoryコレクションが存在しない場合は、自動的に作成されます。

挿入されたドキュメントデータをクエリします:

> db.inventory.find( { item: "canvas" } )
{ "_id" : ObjectId("609bf11dfc901345cafc438a"), "item" : "canvas", "qty" : 100, "tags" : [ "cotton" ], "size" : { "h" : 28, "w" : 35.5, "uom" : "cm" } }

find メソッドを使用して、クエリ条件を入力し、item が "canvas" であるドキュメントデータを見つけます。

複数のドキュメントを挿入する

db.collection.insertMany() メソッドを使用して、コレクションに複数のドキュメントを挿入できます。

例: insertMany メソッドに配列を渡すことで、3つのドキュメントデータを挿入します:

db.inventory.insertMany([
   { item: "journal", qty: 25, tags: ["blank", "red"], size: { h: 14, w: 21, uom: "cm" } },
   { item: "mat", qty: 85, tags: ["gray"], size: { h: 27.9, w: 35.5, uom: "cm" } },
   { item: "mousepad", qty: 25, tags: ["gel", "blue"], size: { h: 19, w: 22.85, uom: "cm" } }
])

戻り値:

{
	"acknowledged" : true,
	"insertedIds" : [
		ObjectId("609bf30ffc901345cafc438b"),
		ObjectId("609bf30ffc901345cafc438c"),
		ObjectId("609bf30ffc901345cafc438d")
	]
}

新たに挿入された3つのドキュメントのIDが返されます。

挿入動作

コレクションの作成

MongoDBでは、事前にコレクションを作成する必要はありません。初めてデータを挿入する際、コレクションが存在しない場合は自動的に作成されます。

_id フィールド

MongoDBでは、コレクションに格納されているすべてのドキュメントには、プライマリキーとして機能する一意の _id フィールドがあります。挿入されたドキュメントが _id フィールドを省略すると、MongoDBドライバーが自動的に _id フィールド用の ObjectId を生成します。

原子性

MongoDBのすべての書き込み操作は、単一のドキュメントレベルでの原子操作です。