2012-02-01 9 views
2

MongoDB IDは、単一のdbクラスタで一意です。特定のObjectIDが使用されているコレクションを取得することは可能ですか?ObjectIDでMongoDBコレクションを取得

私はObjectIDの16進表現を持っており、このIDの文書が入っているコレクションを知る必要があります。

答えて

1

私はあなたのユースケースについてはわかりませんが、_idにObjectIDを使用している場合、短い答えは「いいえ」です。

BSON ObjectIDは、4バイトのタイムスタンプ(エポックからの秒数)、3バイトのマシンID、2バイトのプロセスID、および3バイトのカウンタで構成された12バイトの値です]

または図式:

|0 1 2 3 | 4 5 6 | 7 8 | 9 10 11 | 
| time | machine | pid | inc | 

だからそこに格納されている何のコレクション情報はありません。

しかし、どの値はそうあなたはthatsのが必要な場合は、コレクション情報を格納することができ、独自の規則を、使用することができ_idのために使用することができます...

[1] http://www.mongodb.org/display/DOCS/Object+IDs#ObjectIDs-TheBSONObjectIdDatatype

3

をそれはないですすべてのコレクションに対して反復処理を行い、find({_id: <yourid>})というクエリを呼び出すことが可能です。明らかにこれは非常に遅い操作なので、スキーマの変更や_id値としてのObjectId以外のものの使用は、おそらくあなたのための方法です。

関連する問題