mongodb聚合中空字段的投影

时间:2014-12-18 06:07:23

标签: php mongodb cakephp

我正在使用聚合来使用以下查询从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年获取结果。

请帮我找出解决方案。

1 个答案:

答案 0 :(得分:1)

我相信你可以使用$ ifNull。这将为您提供在$ pud为null时返回默认日期的选项。它适用于聚合。请检查一下 - http://docs.mongodb.org/manual/reference/operator/aggregation/ifNull/