Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Docs Menu

_id のカスタム値の生成

このガイドでは、MongoDB Node.js ドライバーを使用して、プライマリキー ファクトリを使用して独自の _id 値を生成する方法を学習します。

プライマリキー ファクトリを使用すると、挿入操作中に _id を指定しないことを選択した場合に、ドキュメント内にユニークな識別子を作成できます。デフォルトのプライマリキー ファクトリは ObjectId 値を生成します。

注意

Upsert 操作

ドライバーは、プライマリキー ファクトリを適用するかどうかを判断できないため、upsert 操作 にプライマリキー ファクトリを使用しません。upsert 操作でプライマリキー ファクトリを指定し、挿入操作を実行すると、サーバーはそのドキュメントに対して ObjectId を自動生成します。

指定したプライマリキー ファクトリを使用する場合は、検索操作を実行してから、更新または 挿入 操作を実行します。

プライマリキー ファクトリを指定するには、MongoClient インスタンスに pkFactory オプションを適用します。

次のコード スニペットは、pkFactory オプションを適用して、uuid 型の _id 値を生成します。

const { UUID } = require('bson');
...
const client = new MongoClient(uri, {
pkFactory: { createPk: () => new UUID().toBinary() }
});

注意

データの整合性

プライマリキー ファクトリで指定された型とは異なる型の _id フィールドを持つドキュメントを挿入すると、データの不整合が発生します。

たとえば、uuid 型を生成する主キー ファクトリで次の挿入操作を実行すると、_id 値には uuid 型と string 型の両方が含まれます。

myColl.insertOne({ _id: "user1388", ... });

このセクションで説明した型、インターフェース、クラスの詳細については、次のリソースを参照してください。