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