我正在使用聚合通过以下查询从 MongoDB 中查找结果。
$y=2000;
$project['pud_year']=array('$year'=>'$pud');
$conditions=array('aggregate'=>array(
array('$match'=>array('pid'=>$project_id)),
array('$project'=>$project),
array('$match'=>array('pud'=>$y)),
));
$this->paginate=array('limit' => 50,'conditions'=>$conditions);
$test=$this->paginate();
但我收到错误 can't convert from BSON type EOO to Date
。
经过搜索我发现在聚合中,预计日期字段在完整集合中的任何地方都不能为空。但在我的例子中,pud
不是强制性的。当我从查询中删除 pud 的投影时,它工作正常。
如果我没有将 MongoDate 投影到 $year
中,那么我将无法仅获取 2000 年的结果。
请帮我想出解决办法。
最佳答案
我相信你可以使用 $ifNull。当 $pud 为空时,这将为您提供返回默认日期的选项。它适用于聚合。请检查此 - http://docs.mongodb.org/manual/reference/operator/aggregation/ifNull/
关于php - mongodb 聚合中空字段的投影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27540190/