0

2 つの別々の DB に 2 つのコレクションがあります。どちらも配列フィールドを格納します。次のように、両方を一度にクエリする予定です。

配列フィールドに要素 [A,B] と _ids を持つすべてのコレクション 1 ドキュメントは、特定のドキュメント _id を持つコレクション 2 の配列フィールドに存在します。

例として:

ドキュメント (コレクション 1、DB 1):

[{"_id":ObjectId("doc1"), "array1":["A","B"]}, {"_id":ObjectId("doc2"), "array1":["A","C"]}]

user_docs (コレクション 2、DB 2):

[{"_id":ObjectId("usr1"), "array2": [ObjectId("doc1"),ObjectId("foo")]}, {"_id":ObjectId("usr2"), "array2": [ObjectId("bar"),ObjectId("baz")]}]

A、B および usr1 を指定すると、「doc1」オブジェクトを返すクエリが必要です (array1 フィールドに A、B があり、usr1 の array2 フィールドにあるため)。

私は明らかに、あるクエリで A,B を持つすべてのドキュメントを取得し、別のクエリで usr1 のすべてのドキュメントを取得して、アプリケーション レベルで共通要素を見つけることができますが、MongoDB を使用してそれを行うより良い方法はありますか?

ご協力いただきありがとうございます。

4

2 に答える 2

0

結合する可能性がないため、MongoDB に 2 回クエリを実行する必要があります。アプリケーションレベルでそれを行う必要があります。非正規化できるなら、そうしてください。必要なデータを埋め込みドキュメントにキャッシュして、1 つのクエリのみを実行できるようにします。

@Eamonn は正しいと思います。DB 間でクエリを実行する必要はありません。

于 2011-10-08T08:48:13.660 に答える
0

あなたの説明からあなたが何をしようとしているのか正確に理解できません。しかし、データベース全体でデータをクエリする理由がわかりません。これは、両方のデータセットを同じデータベースに保存できないのはなぜでしょうか。必要に応じて、後でいつでも分離できますか? これで漠然とした問題が解決するかどうかはわかりませんが、始めるには良い場所です。

幸運を祈ります。

于 2011-10-08T07:41:05.370 に答える