我正在使用聚合来使用以下查询从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年获取结果。
请帮我找出解决方案。
答案 0 :(得分:1)
我相信你可以使用$ ifNull。这将为您提供在$ pud为null时返回默认日期的选项。它适用于聚合。请检查一下 - http://docs.mongodb.org/manual/reference/operator/aggregation/ifNull/