2016-07-25 9 views
0

Ich versuche, Daten aus Mongo-Sammlung basierend auf Datum abrufen, ich möchte Daten erhalten, wo das Datum größer oder gleich dem heutigen Datum ist (d. H. Das Datum unter dem Datenfeld). Ich kann jedoch nicht verstehen, warum meine Abfrage nichts zurückgibt (leeres Mongo-Objekt). Unten ist mein Code:MongoDB ISODate Abfrage mit PHP

Array struct/Inhalt:

{ 
"_id" : ObjectId("990093409187049704809d"), 
"type" : "number 1 champion", 
"entryDate" : ISODate("2016-05-12T10:55:55.000+0000"), 
"requester" : { 
    "cn" : "Torgue", 
    "username" : "tg" 
}, 
"data" : { 
    "office" : "Badass Crater of Badassitude", 
    "name" : { 
     "firstname" : "Salvador", 
     "middlename" : "A", 
     "surname" : "Gunzerker" 
    }, 
    "date" : ISODate("2016-05-23T23:00:00.000+0000"), 
}, 
"index" : "1" 
} 

PHP-Abfrage:

$today = date(DATE_ISO8601, (new MongoDate())->sec); 
$str = $col1->find(array('type' => 'number 1 champion', 'data.date'=>array ('gte'=>$today))); 
print_r($str); 

Bitte kann mir jemand zeigen in die richtige Richtung oder mir erklären, was zu tun, um zu Holen Sie sich die richtige Ausgabe.

Für alle, die gleiche Problem hat, ist unten die Lösung:

$query = array('type' => 'number 1 champion', 'data.date'=>array ('$gte'=>new mongoDate())); 
$str = $col1->find($query); 

dann Schleife Ergebnisse anzuzeigen:

echo '<pre>'; 
foreach($str as $doc){ 
    print_r($doc); 
} 

Antwort

1

Sie haben MongoDate Objekt zu verwenden, abzufragen.

Für aktuelle Datum, das Sie new MongoDate() verwenden können, die MongoDate mit dem aktuellen Datum initialisiert machen

Wenn Sie einige benutzerdefinierte Datum übergeben möchten Sie strtotime verwenden String Datumstyp

$stringtime = "2016-04-09 00:00:00" 

$inputdate = strtotime($stringtime) 

und dann schließlich zu konvertieren Übergabe an den MongoDate-Konstruktor, um das relevante Objekt zu erhalten.

new MongoDate($inputdate) 

siehe PHP Docs

+0

Ihr Code versucht und immer noch hat es nicht funktioniert :( –

+1

@JustIce sieht aus wie Sie die Lösung jetzt haben, und es sieht aus wie das Problem gleiche war. die neue MongoDate() wird Geben Sie das Objekt mit dem aktuellen Datum new MongoDate (strtotime ($ inputDate)) Sie haben und Option, einige $ inputDate verwenden, die eine Zeichenfolge mit Datumsformat sein kann Ich habe meine Antwort für eine übersichtlichere Sicht aktualisiert – Harshil