0

mongodb のデータベースに「ユーザー」コレクションがあります。シャーディングを使用します。

標準の _id 以外に、インデックスを付けて一意にする必要があるフィールドが他に 3 つあります: ユーザー名、電子メール、およびアカウント番号です。これら 3 つのフィールドすべてがすべてのユーザー ドキュメントに存在するとは限りません。場合によっては、存在しないこともあります。

ユーザーはこれらのフィールドのいずれかによって頻繁に検索されるため、フィールドにインデックスを付けたいと思います。これは要件であり、このロジックをクライアント側で処理したくないため、フィールドを一意にする必要があります。

他のデータベースと同様に、mongodb にも制限があることは理解していますが、これは Web アプリケーションのかなり一般的な設定であるため、解決策があることを願っています。

このシナリオのエレガントなソリューションはありますか?

この質問にとって重要かどうかはわかりませんが (質問はデータベース構造に関係しているため)、公式の mongodb C# ドライバーを使用しています。

4

1 に答える 1

3

Mongodbの公式ドキュメントによると、シャードコレクションには一意のインデックスが1つだけ必要であり、一意のフィールドが存在する必要があります。ただし、シャードキーが属性のプレフィックスである場合にのみ、他の一意のインデックスを使用するオプションもあることも示しています。したがって、これを試すことができますが、一意のキーが常に存在している必要があることに注意してください。

ユーザーに関する情報が存在しないというあなたのビジネスロジックがわかりません。この場合、シャーディングし_idて一意性チェックを手動で実行できます。

于 2011-03-07T05:43:30.717 に答える