【问题标题】:MongoDB - PHP - Unsupported projection optionMongoDB - PHP - 不支持的投影选项
【发布时间】: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 表示显示)
  • 抱歉,刚刚发现错误。我应该使用“项目”而不是“投影”。感谢您的宝贵时间。
  • 所以回答您自己的问题或将其删除。 :)

标签: php mongodb


【解决方案1】:

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

Projection 只允许手册中本页列出的类型:

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

【讨论】:

    猜你喜欢
    • 2021-09-21
    • 1970-01-01
    • 2020-12-01
    • 1970-01-01
    • 2019-09-02
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多