Агрегация Php MongoDB с соответствием и порядком сортировки

Я использую этот запрос в 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);
}

0

Решение

Я нашел решение. Я изменил эту строку:

$manager = new MongoDB\Driver\Manager("mongodb://admin:$psw@localhost:27017");

в это:

$manager = new MongoDB\Driver\Manager("mongodb://admin:$psw@localhost:27017/db_name");

Это была проблема аутентификации.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector