John Nunemakerには、Mongo ObjectIdsについての素晴らしいヒントを掲載したブログ記事があります。http://mongotips.com/b/a-few-objectid-tricks/ - 特にgeneration_timeについてのヒントに興味がありました。彼は明示的にcreated_atの時間をmongoの文書に明示的に格納する必要はないことを示唆しています。なぜなら、あなたはいつもそれを私の注意を引いたIDから引き出すことができるからです。問題は、私が持っているすべてがIDであれば、作成時間に基づいてドキュメントを見つけるためにmongomapperでmongoクエリを生成する方法を理解できません。mongo idsのgeneration_timeを照会しています
私は、鍵保管する場合:
Foo.where(:created_at.gt=>Time.parse("2011-12-01"))
(にマップ:
{created_at: {"$gt"=>Thu Dec 01 06:00:00 UTC 2011}}
私はこのような12月1日以降に作成されたすべての文書を取得するにはmongomapperにクエリを行うことができ、文書の一部としてのcreated_atを
私はObjectIdを使って同等のクエリを作成する方法を理解できません。私はそれがこのように見えると思います(もちろん、generation_timeはルビ関数ですが、 mongoクエリのコンテキスト?)
Foo.where('$where'=>"this.id.generation_time > new Date('2011-12-01')")
{$where: "this.id.generation_time > new Date('2011-12-01')"}
もう1つ質問:mongodumpを使用してデータベースをダンプして復元すると、タイムスタンプのメタデータが失われますか? ObjectIdを保持するバックアップ/リストアテクニックは推奨されていますか?
ここでのアイデアは、私が照会している時間から作成されたIDとIDを比較することです。だから、Idsは生成時間に関して単調に増加するだろうか? – Bee
@Bee:はい、正確です。 –