2017-09-07 20 views
0

私はブランド間の相関値を記録するコレクションを持っています(このような相関がどのように生成されるか解釈されることはありません)。このコレクションのフィールドには 'brand1'、 'brand2'、 'correlation'が含まれます。MongoDBでキー順列の一意性を強制するユニークな複合インデックスを作成できますか?

例として、ブランドでは「google」、「microsoft」などの文字列値を使用して、各ドキュメントがさまざまなブランド名間の相関関係を記録できるとします。

「brand1」と「brand2」フィールドに一意のインデックスを作成して、それぞれのドキュメントがコレクション内で1回のみブランド間の相関を記録するようにしたいとします。これを行うには、コレクション内の一意性を判断する際に、インデックス内のキーの順序を考慮する必要があります。 ['google'、 'microsoft']のキーは、['microsoft'、 'google']のキーと同じであるとみなされるべきです。したがって、前のキーを持つドキュメントがすでに存在する場合は、後者の鍵は禁止される。

この種のインデックスは可能ですか?

答えて

1

MongoDBコレクションにこの種の制約を適用する方法はありません。

しかし、ソフトウェアでは、という制約を適用して、このインデックスの2つのコンポーネントが常にソートされた順序で格納されるようにしています。 (例えば、["a","b"]は常に["b","a"]ではなく格納します)。これにより、コレクション内の任意のペアの "正準"バージョンが1つだけになります。

関連する問題