以下命令在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投影选项错误。
由于
答案 0 :(得分:0)
我认为您不想projection
,但您的意思是project
。
Projection仅允许手册中此页面上列出的类型:
https://docs.mongodb.com/manual/reference/operator/query/#projection-operators