使用Rails 3.2.14、Ruby 1.9.3、Mongoid 3.1.5:
我正在查询看起来像这样的文档:
{
paid_on: ISODate("2013-03-08T22:25:24.973Z"),
paid_amt: 25.5
}
有时paid_on是null
,但我也需要捕获这些文档,所以我试图使用$ifNull来替换默认日期:
Claim.collection.aggregate(
{
"$project" => {
"paid_on" => {"$ifNull" => ["$paid_on", Date.new(1980, 1, 1).mongoize]},
"paid_amt" => 1,
}
}
)
发送到 Mongo 的查询如下所示(刚刚捕获了 $project 部分):
{
"$project"=>{
"paid_on" => {"$ifNull"=>["$paid_on", 1980-01-01 00:00:00 UTC]},
"paid_amt" => 1
}
并失败:
失败,出现错误 16006:“异常:无法从 BSON 类型字符串转换为日期”
我尝试了其他几种方法来发送日期,但没有成功:
- 'ISODate("1980-01-01")'
- { "$date" => 315554400000 }