4

:created_at(この特定の場合は日付である必要があります)にインデックスを持つコレクションがあります

レールからエントリを保存し、日付までに取得する適切な方法は何ですか?

私は次のようなことを試みています:

モデル:フィールド:created_at、:type=>時間

脚本:

Col.create(:created_at => Time.parse(another_model.created_at).to_s

Col.find(:all、:conditions => {:created_at => Time.parse(同じもの)})

そしてそれは何も返さない

4

2 に答える 2

3

MongoドライバーとさまざまなORMは、Date、Time、およびDateTimeオブジェクトを適切に処理します。それらを文字列にキャストする理由はありません。

Col.create(:created_at => another_model.created_at)

そして見つける:

Col.all(:created_at => another_model.created_at)

日付はBSONDateオブジェクトとして内部的に保存され、そのようにインデックス付けおよび検索されるため、文字列を設定する必要はありません。それらを文字列として保存すると、大なり記号/小なり記号/範囲の比較などを効果的に行うことができなくなります。

于 2010-11-24T16:35:05.807 に答える
1
Col.create(:created_at => Time.parse(another_model.created_at).to_s)

その行は、時間オブジェクトを文字列として渡し、を離して、それを時間オブジェクトとしてto_sORM(MongoMapperまたはMongoid)の型解析レイヤーに送信します。それは私が見ることができる唯一のエラーであり、それが機能しなくなる原因となります。

于 2010-11-24T15:54:15.193 に答える