我有两个集合Post(属于posts数据库)和User(属于account数据库)。我的要求是在这两个集合上进行连接。但我无法重现我的要求。我期待两个集合上的联接。
pw9qyyiw1#
目前不支持此功能。不过MongoDB(https://jira.mongodb.org/browse/SERVER-34935)的backlog中有一个要求。到目前为止,您唯一的选择就是手动查询两个不同的数据库,并根据需要将结果合并在一起。不过,从我的Angular 来看,为相关的集合使用不同的数据库有点奇怪。如果可能的话,您也可以考虑重新设计数据库设计。
umuewwlo2#
我认为你只有一个数据库有Post和User集合,而不是两个独立的数据库。如果是,那么你可以使用MongoDB查找聚合,通过一个查询获得连接的数据。
db.Post.aggregate( [ { $lookup: { from: "User", localField: "post_user_id", foreignField: "user_id", as: "post_docs" } } ]);
yhived7q3#
如果您的集合密切相关,它们最好位于同一个数据库中,如其他答案所述。但是,如果您通过MongoDB Atlas运行MongoDB,那么您将能够实现您所描述的,使用Federated Databases到Query across multiple Atlas clusters,然后您可以运行连接这两者的聚合管道。我目前正在使用它来查询两个Atlas集群(一个包含冷数据的数据仓库和一个包含活动数据的数据库)。希望这对你有帮助。
3条答案
按热度按时间pw9qyyiw1#
目前不支持此功能。不过MongoDB(https://jira.mongodb.org/browse/SERVER-34935)的backlog中有一个要求。
到目前为止,您唯一的选择就是手动查询两个不同的数据库,并根据需要将结果合并在一起。不过,从我的Angular 来看,为相关的集合使用不同的数据库有点奇怪。如果可能的话,您也可以考虑重新设计数据库设计。
umuewwlo2#
我认为你只有一个数据库有Post和User集合,而不是两个独立的数据库。如果是,那么你可以使用MongoDB查找聚合,通过一个查询获得连接的数据。
yhived7q3#
如果您的集合密切相关,它们最好位于同一个数据库中,如其他答案所述。
但是,如果您通过MongoDB Atlas运行MongoDB,那么您将能够实现您所描述的,使用Federated Databases到Query across multiple Atlas clusters,然后您可以运行连接这两者的聚合管道。
我目前正在使用它来查询两个Atlas集群(一个包含冷数据的数据仓库和一个包含活动数据的数据库)。
希望这对你有帮助。