如何在mongoDB中连接来自不同数据库的两个集合?

b1zrtrql  于 2022-11-28  发布在  Go
关注(0)|答案(3)|浏览(105)

我有两个集合Post(属于posts数据库)和User(属于account数据库)。我的要求是在这两个集合上进行连接。但我无法重现我的要求。
我期待两个集合上的联接。

pw9qyyiw

pw9qyyiw1#

目前不支持此功能。不过MongoDB(https://jira.mongodb.org/browse/SERVER-34935)的backlog中有一个要求。
到目前为止,您唯一的选择就是手动查询两个不同的数据库,并根据需要将结果合并在一起。不过,从我的Angular 来看,为相关的集合使用不同的数据库有点奇怪。如果可能的话,您也可以考虑重新设计数据库设计。

umuewwlo

umuewwlo2#

我认为你只有一个数据库有PostUser集合,而不是两个独立的数据库。如果是,那么你可以使用MongoDB查找聚合,通过一个查询获得连接的数据。

db.Post.aggregate( [
        {
 $lookup:
   {
     from: "User",
     localField: "post_user_id",
     foreignField: "user_id",
     as: "post_docs"
   }
  }
  ]);
yhived7q

yhived7q3#

如果您的集合密切相关,它们最好位于同一个数据库中,如其他答案所述。
但是,如果您通过MongoDB Atlas运行MongoDB,那么您将能够实现您所描述的,使用Federated Databases到Query across multiple Atlas clusters,然后您可以运行连接这两者的聚合管道。
我目前正在使用它来查询两个Atlas集群(一个包含冷数据的数据仓库和一个包含活动数据的数据库)。
希望这对你有帮助。

相关问题