2017-09-21 6 views
0

Ich muss nach einem Dokument basierend auf 3 Bedingungen in einer bestimmten Reihenfolge suchen.MongoDB effiziente Art, eine Abfrage zu schreiben

d. H., Meine Dokumente haben Attribute wie Benutzer, Fälligkeitsdatum und Abteilung.

Ich muss sehen, ob ein Dokument für eine bestimmte Benutzer-ID ist, wenn nicht, dann muss ich jedes Dokument mit heute als Fälligkeitsdatum überprüfen, wenn nicht muss ich ein Dokument mit der jeweiligen Abteilung finden.

Bitte schlagen Sie mir vor, wie kann ich dies in einer effizienten MongoDB-Abfrage mit einem minimalen DB-Treffer tun.

Antwort

0

Die $ oder Operator in Mongo eine Kurzschlussverhalten hat, was bedeutet, dass es so bald wahr zurückkehren werde als eine der Bedingungen erfüllt ist, haben sie gute Beispiele auf ihrer offiziellen Documentation. Grundsätzlich :

db.mycollection.find({$or : [{condition1},{condition2},{condition3}]}) 

Wenn condition1 wahr ist, dann passt es Ihr Dokument.

Wenn Bedingung1 falsch ist, überprüft Mongo, ob Bedingung2 übereinstimmt.

Wenn condition1 und condition2 falsch ist, dann wird Mongo Bedingung3 laufen und so weiter und so fort ...

Ist Ihre Frage beantworten?

+0

Wenn jedoch in meiner Sammlung Daten vorhanden sind, die sowohl condition1 als auch condition2 entsprechen, sollte meine Abfrage nur die Dokumente zurückgeben, die condition1 erfüllen. – Geek

+1

Oh Entschuldigung, ich habe Ihre Frage falsch verstanden, wenn das der Fall ist, dann müssen Sie, soweit ich weiß, die Abfragen separat ausführen, da Sie das eigentliche Ergebnis benötigen, bevor Sie wissen, ob Sie die anderen ausführen müssen. –

Verwandte Themen