2016-08-30 3 views
0

mein Dokument wie folgt aussieht:

{ 
    "_id" : ObjectId("579f205f20754ea8cc58e22e"), 
    "date" : ISODate("2016-08-01T10:11:00.000Z"), 
    "httpRequestData" : {"charset" : "null", "encoding" : "gzip, deflate"}, 
    "status" : "normalized" 
} 

und ich möchte es Abfrage wie: einige Spalten auswählen und anwenden eine „where“ -Klausel einen „Status und einen Datumsbereich“ Angabe .

So:

db.fingerprint.find({"status" : {"$ne" : "deprecated"}}, 
        { "date": 1, 'httpRequestData.ipAdress': 1}, 
        {"date" : { $gte : new ISODate("2016-08-30") }}) 

Aber es scheint nicht zu dem Zeitbereich Ich will wählen, Datensätze aus Daten vor dem einen zeigte I angegeben.

Was mache ich falsch?

Antwort

1

Sie platzieren die Abfrage für den Datumsbereich falsch; Sie sollten es in dasselbe Dokument/Objekt wie Ihre Statusabfrage einfügen, d. h.

db.fingerprint.find(
    { 
     "status": { "$ne": "deprecated" }, 
     "date": { "$gte": new ISODate("2016-08-30") } 
    }, 
    { "date": 1, "httpRequestData.ipAdress": 1 }, 
)