0

我在 2 个单独的数据库上有 2 个集合。两者都存储一个数组字段。我计划同时查询两者,以便:

所有在其数组字段中具有元素 [A,B] 及其 _id 的集合 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 两次,因为您不可能进行连接。您必须在应用程序级别执行此操作。如果您可以非规范化,请执行此操作。在嵌入式文档中兑现所需的数据,这样您就可以只进行一次查询。

我认为@Eamonn 是对的,您不必跨数据库进行查询。

于 2011-10-08T08:48:13.660 回答
0

好的,我不确定我是否完全了解您从您的描述中想要做什么。但我不明白你为什么要跨数据库查询数据,这对我来说似乎非常沉重,为什么你不能将两个数据集存储在同一个数据库中。如果需要,您可以随时分开吗?我不确定这会解决你模糊的问题,但它会是一个很好的起点。

祝你好运。

于 2011-10-08T07:41:05.370 回答