Я использую этот запрос в Mongo Shell, чтобы упорядочить элементы массива ‘events’ по значению поля ‘start’
db.collection_name.aggregate(
{ $match: {
_id : ObjectId("59941bec47582c1e92b93c9b")
}},
{ $unwind: '$events' },
{ $sort: {
'events.start': 1
}})
Но я не понимаю, как сделать то же самое в php.
Я пытался написать это безрезультатно:
$client = new MongoClient("mongodb://admin:$psw@localhost");
$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);
}
Я пробовал и таким образом:
$manager = new MongoDB\Driver\Manager("mongodb://admin:$psw@localhost: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);
}
Я нашел решение. Я изменил эту строку:
$manager = new MongoDB\Driver\Manager("mongodb://admin:$psw@localhost:27017");
в это:
$manager = new MongoDB\Driver\Manager("mongodb://admin:$psw@localhost:27017/db_name");
Это была проблема аутентификации.
Других решений пока нет …