【发布时间】:2013-10-23 18:49:12
【问题描述】:
使用 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 }
【问题讨论】:
标签: ruby mongodb mongoid aggregation-framework mongoid3