2017-02-21 8 views
1

Следующая команда работает из командной Монго линии:MongoDB - PHP - неподдерживаемый вариант проекции

db.users.aggregate([ 
    {'$match': 'eventDate': 
     {$gte: ISODate("2015-01-01T00:00:00.0Z"), 
     $lte: ISODate("2017-01-01T00:00:00.0Z")} 
    }, 
    {'$project' : 
     {'year' : 
      { $year: '$eventDate' } 
     } 
    } 
]) 

это должно быть PHP эквивалент:

$mongoConnection = new \MongoDB\Driver\Manager(); 
$collection = 'test.users'; 
$query = new \MongoDB\Driver\Query(
    ['eventDate' => array('$gte' => ISODate("2015-01-01T00:00:00.0Z, '$lte' => ISODate("2017-01-01T00:00:00.0Z)], 
    ['projection' => ['year' => [ '$year' => '$eventDate' ]]]] 
); 
$cursor = $mongoConnection->executeQuery($collection, $query); 

, но я получаю: Неподдерживаемый вариант проекционного: год : {$ year: "$ eventDate"}

Если я удаляю «проекционную» часть запроса, то он выполняется правильно. Я исследовал ошибку, и единственный ответ, который я смог найти, - это «имена полей проекции не начинаются с $».

Таким образом, я пробовал все комбинации {$ year: "$ eventDate"} с или без $, но я все еще получаю ошибку параметра Неподдерживаемой проекции.

Благодаря

+0

ли вы пытаетесь сделать «$ first.eventDate»? –

+0

Не работает. :( –

+0

year => 1? Вот как мы это делаем в мангусте. Просто поместите числа (0 для не показанных и 1 для показа) –

ответ