2016-08-08 8 views
0

Ich verwende MongoDB als Datenquelle für meine Loopback-Anwendung. In dem muss ich die Dokumente für den aktuellen Monat abrufen.MongoDb Abfrage für Monat Vergleich in Loopback-Anwendung

also bin ich folgendes versucht:

app.models.aaaa.count({ $where : 'return this.Date.getMonth() == 7'}, function(err, res){ 
}); 

Jetzt möchte ich auch auf Jahr und userId filtern. Wie kann ich die Abfrage dafür konstruieren?

habe ich versucht, die folgenden:

app.models.aaaa.count({ $where : 'return this.Date.getMonth() == 7 && this.Date.getYear() == 2016'}, function(err, res){ 
    }); 

Aber es sucht nach month..Please nur teilen Sie Ihre Ideen. Vielen Dank im Voraus

EDIT:

[ 
    { 
    "aaaId": "57a84a572b9a79022198c6dd", 
    "bbId": "876hjg786", 
    "Date": "2016-08-08T00:00:00.000Z", 
    "cccc": [ 
     "57a1bfd0c77554fd746a538d'", 
     "57a1bfebc77554fd746a538f" 
    ], 
    "id": "57a85e1d9841c9cb1b100f21" 
    }, 
    { 
    "aaaId": "57a84a572b9a79022198c6dd", 
    "bbId": "876hjg786", 
    "Date": "2016-08-08T00:00:00.000Z", 
    "cccc": [ 
     "57a1bfd0c77554fd746a538d'", 
     "57a1bfebc77554fd746a538f" 
    ], 
    "id": "57a85f1d1605d9f11b4d21b3" 
    } 
] 
+0

Können Sie ein Beispiel für ein Dokument in Ihrer Datenbank angeben? –

+0

können Sie Aggregation Framework verwenden? es wird viel schneller sein. – evilive

+0

@evilive Kannst du einen Code dafür schreiben ?? – Subburaj

Antwort

0

Dies sollte funktionieren:

db.myCollection.count( 
    function() { 
    return (this.Date.getMonth() == 7 && this.Date.getYear() == 2016); 
    } 
); 

Beachten Sie, dass wenn Sie nur eine $where haben, kann man einfach die JavaScript-Funktion als .count() Argument schreiben, oder einfach nur der Ausdruck als eine Zeichenfolge wie folgt:

db.myCollection.count("this.Date.getMonth() == 7 && this.Date.getYear() == 2016"); 
+0

Ich erhalte den Fehler AssertionError: Das Argument where muss ein Objekt sein – Subburaj

0

Verwendung aggregation framework für Projekt und passen Sie die docs:

collection.aggregate(
    {$project: { 
    month: {$month: "$Date"}, 
    year: {$year: "$Date"} 
    }}, 
    {$match: {month: 8, year: 2016}} 
); 

werden Sie etwas wie diese:

{ "_id" : ObjectId("57a86cbe8357264ce0b55b2b"), "m" : 8, "y" : 2016 } 

, wenn Sie einige Felder aus Originaldokument benötigen sie nur in project Bühne beschreiben.

Die Aggregation muss wesentlich effizienter sein als die Verwendung von where.