8

インデックス付きフィールドに関しては 、多くの問題がSpring Dataあります。MongoDB

ドキュメントを確認しましたが、との違いを説明するのはあまり得意ではありませ@Indexed(unique=true)@Indexed(unique=false)

インデックスを作成したいフィールドがあるので、それに対して高速クエリを実行できます。この場合、それは一般的に一意であるはずの電子メールアドレスですが、emailAddressが一定期間nullになる可能性があります。

ただし、1つのレコードがnullのemailAddressになると、nullのemailAddressを持つ他のレコードを作成できなくなります。Spring Dataは、null emailAddressesを使用して追加のレコードを挿入することを拒否します。そして、それはそれが機能しなかったものを投げることに失敗します。

現在、に設定していますが、この問題を回避するために unique=true設定することを検討しています。unique=false

これで問題は解決しますか?

そして、これを緩和することによって、他にどのような問題を追加できますか?

MongoDBを使用すると、同等でありながらクエリを高速に実行できる複数の電子メールアドレスを使用できますか?

4

1 に答える 1

12

mongodbドキュメントから:http: //docs.mongodb.org/manual/core/indexes/#unique-indexes

したがって、一意のキーがある場合は、それをnullに設定しないでください。

正直なところ、あなたのユースケース(メールフィールド)では、一意のキーを使用する必要はなく、代わりにスパースキーを使用できると思います。そのため、メールがないドキュメントはbtreeインデックスを使用しません。スペースを節約し、ルックアップ速度を向上させます。

于 2012-12-16T20:21:05.143 に答える