MongoDB - PHP - 不支持的投影选项

时间:2017-02-21 09:38:10

标签: php mongodb

以下命令在mongo命令行中起作用:

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 );

但我得到:不支持的投影选项:年:{$年:" $ eventDate" }

如果我删除了'投影'查询的一部分,然后它正确执行。我已经研究过这个错误,我能找到的唯一答案就是在投影字段名​​称中不能以$'开头。

所以我尝试了{$ year:" $ eventDate"有或没有$但我仍然得到Unsupported投影选项错误。

由于

1 个答案:

答案 0 :(得分:0)

我认为您不想projection,但您的意思是project

Projection仅允许手册中此页面上列出的类型:

https://docs.mongodb.com/manual/reference/operator/query/#projection-operators