insertOne() (単一ドキュメントの挿入)
最終更新:2026-10-09
insertOne() (単一ドキュメントの挿入)
insertOne() は単一のドキュメントをコレクションに挿入します。ドキュメントに _id が無い場合、MongoDB が ObjectId を自動生成します。結果には insertedId と acknowledged が含まれます。insertMany() とは異なり、1回のラウンドトリップで行われる、最も直接的でシンプルな単一ドキュメント書き込みです。
| カテゴリ | 書き込み |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
db.<collection>.insertOne(<document>, { writeConcern: <options> })
⚙️ パラメータ
| ドキュメント | 挿入する BSON ドキュメント。ネストしたフィールドや配列を含められます。 |
|---|
戻り値:WriteResult: { acknowledged, insertedId }
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// insertOne: 単一のユーザーを挿入する
db.users.insertOne({
name: "Alice",
age: 21,
address: { city: "Beijing" }
})
出力:
{
acknowledged: true,
insertedId: ObjectId("64c8a1b2f3d4e5a6b7c8d9e0")
}
📌 注意事項
- ObjectId は _id が無い場合に自動生成される
- ドキュメントのサイズ上限は 16MB(BSON)
- _id が重複すると DuplicateKeyError が発生する(ユニークインデックス)
- 書き込み確認(write concern)のデフォルトは acknowledged: true
🏷️ 関連タグ
💡 関連ケース
📚 関連チュートリアル
❓ よくある質問
QinsertOne で配列を挿入できますか?
Aできません。最上位は必ずドキュメント(オブジェクト)である必要があります。配列はドキュメント内のフィールド値としては問題ありません。
QinsertOne で _id を省略するとどうなりますか?
AMongoDB が _id 用に ObjectId を自動生成します。独自の _id を指定することもできますが、コレクション内で一意である必要があり、重複すると重複キーエラーが発生します。
QinsertOne で writeConcern を指定できますか?
Aできます。第2引数に { writeConcern: { w: 'majority' } } のようなオプションを渡して確認レベルを制御できます。指定しない場合はコレクションまたはセッションの設定が適用されます。