Я пытаюсь использовать агрегат с проектом, сопоставлять и сортировать, но получаю исключение (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;
Похоже, проблема в вашем $sort
назначение. У тебя есть
$sort = array('Field3' => -1, 'Field4'=>-1);
который на самом деле не дает $sort
стадия уточнения. Не должно ли это быть:
$sort = array('$sort' => array( 'Field3' => -1, 'Field4'=>-1 ) );
Других решений пока нет …