Spring MongoDB: Prüfen ob bereits eine Email existiert

Was meinst du mit "Prüfen, ob eine E-Mail Adresse existiert"?
Das kannst du nicht prüfen, ohne nicht zumindest eine E-Mail an den möglichen Empfänger zu senden und eine Zustellungs-Fehlermeldung zu bekommen.

Du meinst vermutlich, dass du prüfen möchtest, ob ein Document in einer MongoDB Collection bereits existiert, dessen "email" (oder ähnlich) Property einen von dir gesuchten Wert besitzt.
 
Was meinst du mit "Prüfen, ob eine E-Mail Adresse existiert"?
Das kannst du nicht prüfen, ohne nicht zumindest eine E-Mail an den möglichen Empfänger zu senden und eine Zustellungs-Fehlermeldung zu bekommen.

Du meinst vermutlich, dass du prüfen möchtest, ob ein Document in einer MongoDB Collection bereits existiert, dessen "email" (oder ähnlich) Property einen von dir gesuchten Wert besitzt.
Ich meinte mit prüfen, dass herausfinden ob, unabhängig von der Groß/Kleinschreibung existiert.

Also durch folgendes müsste true ergeben

Vergleichswert = Document
email@email.com = email@email.com ----> true, beide sind identisch
Email@email.com = email@email.com ----> true, beide sind identisch
eMail@EMail.com = email@email.com ----> true, beide sind identisch

Denn findByEmail aus dem Spring MongoDB Repository würde folgendes liefern
email@email.com = email@email.com ----> true, beide sind identisch
Email@email.com = email@email.com ----> false, nicht identisch
eMail@EMail.com = email@email.com ----> true, nicht identisch
 
Zuletzt bearbeitet:
Üblicherweise stellt man beim Schreiben sicher, dass nur die kanonische/Kleinform geschrieben wird. Und beim Suchen suchst du auch explizit nur nach der Kleinform. Also bei Insert und Search machst du vorher address.toLowerCase().
 
Üblicherweise stellt man beim Schreiben sicher, dass nur die kanonische/Kleinform geschrieben wird. Und beim Suchen suchst du auch explizit nur nach der Kleinform. Also bei Insert und Search machst du vorher address.toLowerCase().
"Problematisch" wirds dann wenn man für den Endanwender eine Eingabemaske baut.
Beispiel: Benutzer gibt ein "EMail@email.com" und wundert sich, wenn er sich den Benutzer ansieht sich anschliessend wundert, dass dort "email@email.com" steht und nicht "EMail@email.com".

Ansonsten würde ich dir Recht geben.
 
Dann leg zwei Spalten/Properties/Felder an. Einmal mit dem Anzeigenamen, so wie es der Benutzer eingegeben hat und eine "Key"-Spalte, die die kanonische Form beinhaltet.
 
Wenn wir von NoSQL Datenbanken wie MongoDB reden, ist "Normalisierung" sowieso ausm Fenster. 🙂
NoSQL Datenbanken sind keine relationalen Datenbanken und gehen davon aus, dass das Datenmodell dem Abfrageverhalten entspricht und nicht einem normalisierten relationalen Modell, welches per Joins in die Form von Abfrageergebnissen gebracht werden kann.
 
Wenn wir von NoSQL Datenbanken wie MongoDB reden, ist "Normalisierung" sowieso ausm Fenster. 🙂
NoSQL Datenbanken sind keine relationalen Datenbanken und gehen davon aus, dass das Datenmodell dem Abfrageverhalten entspricht und nicht einem normalisierten relationalen Modell, welches per Joins in die Form von Abfrageergebnissen gebracht werden kann.
Da gebe ich dir bedingt Recht, aber wieso zweimal Email speichern, wenn es durch SQL (Springspezifisch) durch eine LIKE erledigt werden können?
Nachtrag von einem Join war bist jetzt nocht nicht die Rede 🙂
 
Nachtrag: Aber bis hierhin erstmal Danke an dich httpdigest ich werde es wohl mit einem Regex auf einer Query erschlagen. 🙂
Weist du zufällig wie der RegEx lauten muss?
 
Ich muss gestehen, dass ich mit MongoDB noch nicht viel gemacht habe, aber ich habe da paar Dinge gefunden, die evtl. interessant sein könnten:

- Wenn auf dem email Feld auch ein index ist, dann wäre dies hier die gewünschte Suche:
- Und in Spring wäre das dann vermutlich:

Oder habe ich hier jetzt einfach die Fragestellung bzw. die gefundenen Seiten falsch verstanden, so dass dies nicht weiter hilft?
(Das kann ich nicht ausschließen, da ich das so noch nie gebraucht habe. Evtl. kann da ja jemand kurz drauf schauen um das zu bewerten ... Eine Chance mich auszulachen 🙂 )
 
Ich muss gestehen, dass ich mit MongoDB noch nicht viel gemacht habe, aber ich habe da paar Dinge gefunden, die evtl. interessant sein könnten:

- Wenn auf dem email Feld auch ein index ist, dann wäre dies hier die gewünschte Suche:
- Und in Spring wäre das dann vermutlich:

Oder habe ich hier jetzt einfach die Fragestellung bzw. die gefundenen Seiten falsch verstanden, so dass dies nicht weiter hilft?
(Das kann ich nicht ausschließen, da ich das so noch nie gebraucht habe. Evtl. kann da ja jemand kurz drauf schauen um das zu bewerten ... Eine Chance mich auszulachen 🙂 )
Danke für deinen Hinweis KonradN
 

Neue Themen


Zurück
Oben