mongodb — объект спецификации этапа конвейера должен содержать ровно одно поле с агрегатом php mongo

Я пытаюсь использовать агрегат с проектом, сопоставлять и сортировать, но получаю исключение (MongoResultException если быть точным) говоря

exception: A pipeline stage specification object must contain exactly one field.

Это прекрасно работает, когда я не использовал сортировку и ограничение, но они мне нужны для этого. Причина, по которой я не пользуюсь find() потому что я где-то читал, что это может повысить производительность.
Пожалуйста помоги

$query = array(.... //An actual query that works with find()
$collection = $this->db->CollectionName;
$project = array(
'$project'  => array(
'Field1'    => 1,
'Field2'=> 1,
'Field3'=> 1,
'Field4'      => 1
)
);
$match = array( '$match'=>$query);
$sort = array('Field3' => -1, 'Field4'=>-1);
$limit = array('$limit' => 100);$result = $collection->aggregate(array($match,$project,$sort,$limit));
return $result;

5

Решение

Похоже, проблема в вашем $sort назначение. У тебя есть

   $sort = array('Field3' => -1, 'Field4'=>-1);

который на самом деле не дает $sort стадия уточнения. Не должно ли это быть:

    $sort = array('$sort' => array( 'Field3' => -1, 'Field4'=>-1 ) );
4

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

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

По вопросам рекламы [email protected]