【问题标题】:Is it possible to do a $lookup aggregation between two databases in Mongodb?是否可以在 Mongodb 中的两个数据库之间进行 $lookup 聚合?
【发布时间】:2017-01-06 11:04:38
【问题描述】:

我正在尝试做这样的事情:

use user; 

db.user.aggregate([
    {
      $lookup:
        {
          from: "organization.organization",
          localField: "organizationId",
          foreignField: "uuid",
          as: "user_org"
        }
   }
])

userorganization 位于两个不同的数据库中。

如果这不可能,有什么替代方案?

【问题讨论】:

    标签: mongodb mongodb-query mongodb-aggregation


    【解决方案1】:

    是的,只需阅读以下 mongodb 文档:

    在 Atlas Data Lake 中,$lookup 可用于执行来自不同数据库的集合的连接。

    https://docs.mongodb.com/datalake/reference/pipeline/lookup-stage

    【讨论】:

      【解决方案2】:

      是否可以在两个数据库之间进行 $lookup 聚合 MongoDB?

      无法在两个不同的数据库中使用查找进行查询。 mongodb 中的$lookup 支持对同一数据库中的非分片集合执行左外连接。

      {
         $lookup:
           {
             from: <collection to join>,
             localField: <field from the input documents>,
             foreignField: <field from the documents of the "from" collection>,
             as: <output array field>
           }
      }
      

      我们可以使用getSibling("dbname")从一个db查询另一个db

      db.getSiblingDB('test').foo.find()
      

      参考 - MongoDB cross database query

      【讨论】:

      • 哦,好的。但是我将如何在聚合中使用该兄弟数据库?有可能吗?
      • 聚合中不能使用兄弟。
      • 这个答案需要更新,因为现在这似乎是可能的。查看@gnopor 的回答
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-30
      • 2022-07-09
      • 2022-01-05
      • 2017-02-16
      • 1970-01-01
      • 1970-01-01
      • 2020-08-10
      相关资源
      最近更新 更多