Mungo wie schreibe ich eine Abfrage mit if-Bedingung?

8

Angenommen, ich habe die folgende Abfrage:

%Vor%

Was ich machen möchte ist: 1- Überprüfen Sie, ob queryData.dateGroups.thirtyHourAgo vorhanden ist und einen Wert hat, fügen Sie dann nur die relevante Übereinstimmungsklausel in die Abfrage ein (Anzahl der Beiträge nur für die letzten 30 Stunden). 2- Überprüfen Sie, ob queryData.dateGroups.fourtyHourAgo vorhanden ist, und fügen Sie den relevanten Abfrageabschnitt hinzu (Anzahl der Beiträge für die letzten 30 Stunden und die letzten 48 Stunden). 3 und das gleiche für queryData.dateGroups.oneMonthAgo (Anzahl der Beiträge für die letzten 30 Stunden, 48 Stunden und nach einem Monat).

Ich brauche etwas wie Mysql, wenn Bedingung, um zu prüfen, ob eine Variable existiert und nicht leer, dann eine Abfrageklausel enthalten. Ist das möglich?

Meine Beispieldaten sind wie folgt:

%Vor%

Angenommen, ich habe drei Links in meiner Anwendungsschnittstelle: 1- vor 30 Stunden Beiträge. 2- vor 48 Stunden Beiträge. 3- letzten Monat Beiträge.

Wenn der Benutzer nun auf den ersten Link klickt, sollte ich die Beiträge erst seit 30 Stunden gruppieren, aber wenn der Benutzer auf den zweiten Link klickt, sollte ich meine Abfrage vorbereiten, um Beiträge für 30 Stunden und auch für 48 Stunden zu gruppieren Klicken Sie auf den dritten Link, den ich für alle vorbereiten sollte.

Ich möchte etwas wie:

%Vor%     
jones 10.05.2017, 10:34
quelle

2 Antworten

7

Sie können Javascript verwenden, um ein json-Dokument basierend auf Ihren Abfrageparametern dynamisch zu erstellen.

Ihre aktualisierte Funktion sieht ungefähr wie

aus %Vor%     
Veeram 14.05.2017, 02:53
quelle
1

Wie ich verstanden habe, kann ich Ihnen folgende allgemeine Abfrage vorschlagen. Ändern Sie dies nach Ihren Bedürfnissen.

%Vor%

Zusammenfassung:

  • Benutzte Übereinstimmung, um das Ergebnis herauszufiltern.
  • Wir verwenden die Aggregationspipeline, sodass Sie weitere aggregierte Operatoren in der Pipeline hinzufügen können
  • Wenn Sie $ und verwenden, führen Sie ein logisches UND aus, da wir einige Dokumente zwischen einem Give-Bereich wie 1 Tag, 2 Tage oder 1 Monat abrufen möchten (Datumsparameter entsprechend Ihrer Anforderung ändern)
Sandeep Sharma 13.05.2017 08:21
quelle