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")'
- { "$日付" => 315554400000 }