2017-09-13 4 views
0

ich diese Abfrage in Mongo Shell verwenden, um die Elemente des Arrays ‚Ereignisse‘, um durch den Wert des FeldesPhp MongoDB Aggregation mit Spiel und Sortierreihenfolge

db.collection_name.aggregate(
{ $match: { 
    _id : ObjectId("59941bec47582c1e92b93c9b") 
}}, 
{ $unwind: '$events' }, 
{ $sort: { 
    'events.start': 1 
}}) 

‚Start‘ zu bekommen, aber ich weiß nicht verstehe, wie man in php dasselbe macht. Ich habe versucht, dies ergebnislos zu schreiben:

$client = new MongoClient("mongodb://admin:[email protected]"); 
$collection = $client->db_name->collection_name; 

$cursor = $collection->aggregate([ 
     ['$match' => ['_id' =>new MongoDB\BSON\ObjectID("59941bec47582c1e92b93c9b")]], 
     ['$unwind' => '$events'], 
     ['$sort' => ['events.start' => 1]] 
]); 

foreach($cursor as $document) { 
    var_dump($document); 
} 

habe ich versucht, auch in dieser anderen Art und Weise:

$manager = new MongoDB\Driver\Manager("mongodb://admin:[email protected]:27017"); 

$command = new MongoDB\Driver\Command([ 
    'aggregate' => 'collection_name', 
    'pipeline' => [ 
     ['$match' => ['_id' =>new MongoDB\BSON\ObjectID("59941bec47582c1e92b93c9b")]], 
     ['$unwind' => '$events'], 
     ['$sort' => ['events.start' => 1]] 
    ], 
]); 
$cursor = $manager->executeCommand('db_name', $command); 

foreach($cursor as $key=>$document) { 
    var_dump($document); 
} 
+0

Ihre Abfrage sieht gut aus. Ziehen Sie in Betracht, Beispieldokumente hinzuzufügen, die von der Abfrage erwartet werden. Überprüfen Sie, ob Sie verbunden sind, um den mongo Server & db mit den richtigen Berechtigungen zu korrigieren, indem Sie eine einfache Suchabfrage ausführen. – Veeram

+0

ja, danke. Mit dem zweiten Code gab es ein Authentifizierungsproblem. Ich habe jetzt den DB-Namen in der Verbindungs-URL hinzugefügt. – aleknx1000

Antwort

0

Ich habe eine Lösung gefunden. Ich habe diese Linie geändert:

$manager = new MongoDB\Driver\Manager("mongodb://admin:[email protected]:27017"); 

in diese:

$manager = new MongoDB\Driver\Manager("mongodb://admin:[email protected]:27017/db_name"); 

Das ist eine Authentifizierungsproblem war.