我正在使用聚合查询从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();
但是我遇到了错误:无法将BSON类型EOO转换为日期
。
经过搜索,我发现在聚合中,投影的日期字段不能在整个集合中的任何位置为空。但在我的情况下,pud
不是必须的。当我从查询中删除 pud 的投影时,它可以正常工作。
如果我不将 MongoDate 投影到 $year
中,则无法仅获取 2000 年的结果。
请帮助我找出解决方案。
ifNull
结构。其中,nullFieldDt
是没有日期字段的记录的字段的默认值。 - BatScream$project['pud_year'] = array('$year' => array('$ifNull'=> array('$pud',nullFieldDt)));
但是它会出现错误:“$year运算符不接受对象作为操作数”。 - عثمان غني$project['pud_year'] = array('$year' => array('$ifNull'=> array('$pud',nullFieldDt)));
有什么问题吗? - عثمان غنيnullFieldDt
声明为日期类型也会产生相同的错误。还是说我需要按照某种特定的格式来格式化日期? - عثمان غني