5

MongoDB では、オブジェクト ID はコレクション全体で一意である可能性が非常に高くなります。

では、オブジェクト ID だけを使用して、ドキュメントがどのコレクションに含まれているかを知らなくても、Mongo データベースにドキュメントのクエリを実行することは可能でしょうか?

ありがとう

4

1 に答える 1

4

あなたと@Sammayeがコメントで述べているように、ObjectIDはおそらく一意になるでしょう(mongodbサイトから取得)

ObjectId is a 12-byte BSON type, constructed using:

a 4-byte value representing the seconds since the Unix epoch,
a 3-byte machine identifier,
a 2-byte process id, and
a 3-byte counter, starting with a random value.

そのため、同じになることはほとんど不可能です。(3 バイトのカウンターがすべてのコレクションで同じかどうか、またはコレクションごとに異なるカウンターがあるかどうかはわかりません)

簡単にするために、ObjectID はデータベース内のすべてのレコードで一意であるとしましょう。

データベース全体でレコードを検索する「1 つのクエリ」はありません。Mongodb には、求めていることを達成するデフォルトの方法はありません。

重要な解決策については、この質問を参照してください


コメント後に更新

データベースに複数回クエリを実行したくない場合は、次のことができます

  • すべてのコレクション名についてデータベースを照会します。
  • すべてのコレクション名を反復し、各名前クエリを使用して、その一意の ObjectID の各コレクションを検索します
  • コレクションがオブジェクトを返す場合、ループを中断してオブジェクトを返します

(例を示すために使用しているプログラミング言語を述べていないため、これはその方法の説明です)

于 2013-10-15T10:02:53.240 に答える