【发布时间】:2017-02-21 17:55:28
【问题描述】:
以下命令可从 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 );
但我得到:不支持的投影选项:年份:{ $year: "$eventDate" }
如果我删除查询的“投影”部分,那么它会正确执行。我已经研究了这个错误,我能找到的唯一答案是“在投影字段中,名称不以 $ 开头”。
所以我尝试了所有有或没有 $ 的 { $year: "$eventDate" } 组合,但我仍然收到 Unsupported projection option 错误。
谢谢
【问题讨论】:
-
你尝试过“$first.eventDate”吗?
-
年 => 1?这就是我们在猫鼬中所做的事情。只需输入数字(0 表示不显示,1 表示显示)
-
抱歉,刚刚发现错误。我应该使用“项目”而不是“投影”。感谢您的宝贵时间。
-
所以回答您自己的问题或将其删除。 :)