シナリオ:私は以下のデータで、MyCollection
と呼ばれるコレクションを持っています考えてみましょう:ISOの日付が文字列フィールドに格納されているMongoDBコレクションの日付範囲をクエリする方法はありますか?
{
"_id" : 'MyUniqueID_01'
"CreatedTime" : "2013-12-01T14:35:00Z",
"LastModifiedTime" : "2013-12-01T13:25:00Z"
}
今私は、データの前述の種類がドキュメントの膨大な数であるMongoDBのデータベースを照会します。そして、私のクエリは、日付範囲に基づいて、すなわちだから私のクエリのようなものかもしれ$gt
、$gte
、$lt
& $lte
を使用して:上記の例を考えると
db.MyCollection.find({ 'CreatedTime': {$gt: '2013-05-25T09:29:40.572Z'}})
予想結果は、クエリが取得する必要があり"2013-05-01T14:35:00Z"がクエリ '2013-05-25T09:29:40.572Z'で渡された値よりも大きいため、 "CreatedTime"一方、問題はフィールドCreatedTime
が文字列形式であることです。
質問:文字列のフィールドタイプを変更せずに期待した結果を得ることができる方法はありますか?
これらのようなISO 8601日時文字列は、日付範囲クエリで正常に動作するはずです。これはフォーマットの利点の1つです。サンプルクエリは、期待どおりにサンプルドキュメントを返します。 – JohnnyHK
@ JohnnyHK:ありがと...正確にそれは私のローカルDBで動作しますが、同じクエリが失敗してライブサーバ上で期待どおりになっています..バージョンの依存関係はありますか? –
@AmolMKulkarni好奇心の渦中に、なぜそれがサーバ上で動作しなかったのか分かりましたか?私は時間の範囲の間に照会に取り組んでおり、検索中にこれを見つけました。 – Raghuveer