php - mongodb 聚合中空字段的投影

标签 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 年的结果。

请帮我想出解决办法。

最佳答案

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

关于php - mongodb 聚合中空字段的投影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27540190/

相关文章:

php - 从多列中获取结果 MySQL PHP

PHP - 替换图像中的颜色

php - 如何查找和更新多条记录?

mongodb - 无法在 MongoDb CSharp 中从 FindAndModify 转换修改后的文档

mysql - CakePHP 在成功查询时返回 False

mysql - CakePHP/MySQL 获取松散关联的数据

security - CakePHP 保存修改数据时是否自动处理批量赋值漏洞?

php - laravel 中 URL::to 和 URL::route 的区别

mongodb - mongo聚合匹配可以使用MongoDB Compass返回所有文档吗?

mongodb - 仅检索 MongoDB 集合中对象数组中的查询元素