MongoDB:跨两个数据库的$ lookup

时间:2019-09-04 11:34:52

标签: javascript node.js mongodb

我有两个数据库。

  1. 一个包含用户信息的数据库。
  2. 一个包含销售信息的数据库。

我正在尝试汇总一个集合。我需要使用localField作为用户数据库中的用户ID进行$ lookup。

我该怎么做?

在猫鼬中,我可以使用populate并指定要使用的模型,如下所示:

_launchURL(String toMailId, String subject, String body) async {
  var url = 'mailto:$toMailId?subject=$subject&body=$body';
  if (await canLaunch(url)) {
    await launch(url);
  } else {
    throw 'Could not launch $url';
  }
}

但是在$ lookup中,我看不到这样的选择吗?

问题开始的示例:

.populate({
  path: 'user',
  select: 'name',
  model: UserModelFromDifferentDB
})

1 个答案:

答案 0 :(得分:0)

据我所知,聚合不可能在两个数据库之间进行$ lookup。 但是,如果您可以执行一些逻辑代码,那么“ getSiblingDB()”将为您提供帮助。

 first_DB_data = db.getSiblingDB('students').bca.find() //'students' is DB,'bca' is collection
 second_DB_data = db.getSiblingDB('marks').finals.find() //'marks' is DB,'finals' is collection

从两个数据库中获取所有记录后,您可以执行代码以获取所需的输出。 现在,您拥有两个数据库中的所有记录,您可以根据任何条件过滤掉数据。 希望对您有帮助