2017-02-21 30 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表示) –

回答