MongoDB:带数组的嵌套查询及其性能

MongoDB:带数组的嵌套查询及其性能,mongodb,mongodb-scala,Mongodb,Mongodb Scala,我在2个单独的数据库上有2个集合。两者都存储一个数组字段。我计划同时查询这两个问题,以便: 数组中包含元素[A,B]的所有集合1文档 字段及其_ID以 特定文档id 例如: 文档集合1,数据库1: [{"_id":ObjectId("doc1"), "array1":["A","B"]}, {"_id":ObjectId("doc2"), "array1":["A","C"]}] 用户文档集合2,数据库2: [{"_id":ObjectId("usr1"), "array2": [Object

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

数组中包含元素[A,B]的所有集合1文档 字段及其_ID以 特定文档id

例如:

文档集合1,数据库1:

[{"_id":ObjectId("doc1"), "array1":["A","B"]}, {"_id":ObjectId("doc2"), "array1":["A","C"]}]
用户文档集合2,数据库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有更好的方法吗


谢谢你的帮助。

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


祝您好运。

您必须查询MongoDB两次,因为您不可能加入。您必须在应用程序级别执行此操作。如果你能去规范化,就去做吧。在嵌入式文档中兑现所需数据,以便您只能执行一次查询

我认为@Eamonn是对的,您不必跨DBs进行查询