2017-02-24 4 views
1

Ich habe eine MySQL-Abfrage, müssen in mongodb für die neueste Version Driver \ Manager mongodb.so mithilfe von PHP executeCommand oder executeQuery konvertieren.Übereinstimmung und Gruppierung nach Datum

SELECT created_time, count(id) AS total 
FROM `tweets` 
WHERE created_time >= (NOW() - INTERVAL 10 DAY) AND active = 1 
GROUP BY DATE(created_time) 

bisher versucht ist:

$manager = new MongoDB\Driver\Manager("mongodb://".$_SERVER['HTTP_HOST'].":27017"); 
    $cond = [ 'created_time' => ['$gte' => '(NOW() - INTERVAL 10 DAY'], 'active' => 1 ]; 
    $command = new MongoDB\Driver\Command([ 
     'aggregate' => 'collection_name', 
     'pipeline' => [ 
      ['$match' => $cond], 
      ['$group' => ['_id' => '$created_time', 'total' => ['$sum' => '$_id']]], 
     ], 
     'cursor' => new stdClass, 
    ]); 
    $cursor = $manager->executeCommand('db_name', $command); 
    $result = array(); 
    foreach ($cursor as $document) { 
     $result[] = $document; 
    } 
+1

wäre es schön, wenn Sie hinzufügen können, was Sie bisher versucht haben. – Veeram

+0

Ok, ich habe mich mit meinem bisher versuchten Code aktualisiert. –

Antwort

0

Sie nah sind.

Aktualisieren Sie Ihre $cond mit unten. Rest sieht gut aus.

Gruppierungsschlüssel _id aktualisieren, um nur den Datumsteil aufzunehmen.

['$dateToString' => ['format' => "%Y-%m-%d", 'date' => '$created_time']] 
+0

Vielen Dank, aber ich brauche Ersatz der folgenden MySQL-Abfrage. In der Gruppe von $ created_time ist db-Feld, das datetime enthält, aber ich brauche nur nach Datum gruppieren ohne Zeit. SELECT created_time, Anzahl (id) AS total VON Tweets WHERE created_time> = (JETZT() - INTERVALL 10 DAY) UND aktiv = 1 GROUP BY DATE (created_time) –

+0

Aktualisierte Antwort. – Veeram

+0

Ich tat dies: ['$ Gruppe' => ['_id' => ['$ dateToString' => ['Format' => "% Y-% m-% d", 'Datum' => ' $ created_time ']], 'total'=> [' $ sum‘=> '$ _id']]], aber bekam Fehler: Fatal error: abgefangene Ausnahme 'MongoDB \ Driver \ Exception \ Runtime' mit Nachricht 'kann nicht von BSON-Typ String in Datum konvertieren' –

Verwandte Themen