Contrainte Unique avec Deux Champs dans MongoDB
J'ai une collection avec les champs "email" et "friends_email". Je voudrais d'installation unique-ness contrainte comme les suivantes, à l'aide de MongoDB:
-
Aucun enregistrement n'aura la même valeur pour les e-mails et friends_email. Donc, ce serait invalide:
{"email": "[email protected]", "friends_email": "[email protected]" }
-
N ° 2 enregistrements ont les mêmes valeurs pour tous les champs. Donc les exemples suivants seraient TOUS des nuls:
{ { "email": "[email protected]", "friends_email": "[email protected]" }, { "email": "[email protected]", "friends_email": "[email protected]" } } { { "email": "[email protected]", "friends_email": null }, { "email": "[email protected]", "friends_email": null } } { { "email": null, "friends_email": "[email protected]" }, { "email": null, "friends_email": "[email protected]" } }
En clair, il serait quelque chose comme la concaténation de
email
etfriends_email
sera unique, avecnull
etundefined
être fusionné en vide-chaîne.
Quelle est la meilleure façon d'appliquer cette règle dans MongoDB?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez avoir composé index unique sur
email
etfriends_email
le terrain pour assurer le second cas. Mais pour le premier cas, vous devez gérer que dans le code de l'application ou de l'utilisation d'un java mapper comme Morphia d'avoir un champ de validation. Vous pourriez veux vérifier le post suivant aussi:Il sonne comme vous avez besoin d'un composé unique indice:
... et vous pouvez vérifier à l'ORM couche email =/= friends_email.
pour le deuxième cas, est un composé de l'indice de ce que vous recherchez?
Comme pour le premier cas, je ne sais pas si il existe un moyen de faire respecter la première règle. Vous pouvez avoir besoin pour effectuer la vérification sur le côté application.