この章では、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のすべての書き込み操作は、単一のドキュメントレベルでの原子操作です。