【问题标题】:Mongodb - GET everything from multiple collections in a single resultMongodb - 在单个结果中从多个集合中获取所有内容
【发布时间】:2020-04-17 10:59:04
【问题描述】:

我有一个 Express API,我正在尝试从多个集合中获取所有内容。我相信聚合可能是要走的路,但是我很难理解聚合,并且我的印象是您需要指定所需的每个键。但是,在另一个包含大量键的数据示例中,聚合查询可能会变得相当大。

一个简单的例子:

汽车

{
 Name: 'A',
 Type: 'Car',
 Tyres: 'B'
}

自行车

{
 Name: 'B',
 Type: 'Bike',
 Tyres: 'C'
}

卡车

{
 Name: 'C',
 Type: 'Truck',
 Tyres: 'D',
 Size: 'E',
}

我想做一个 GET 请求,我可以从这些集合中获取所有内容,目前我正在使用循环,但我觉得可能有更好的方法。

编辑: 我希望结果是这样的

{
    {
         Name: 'A',
         Type: 'Car',
         Tyres: 'C',
    },
    {
         Name: 'B',
         Type: 'Bike',
         Tyres: 'C',
    },
    {
         Name: 'C',
         Type: 'Truck',
         Tyres: 'D',
         Size: 'E',
    }
}

【问题讨论】:

  • @mehta-rohan 在您链接的示例中,他们试图通过特定值进行匹配,但是我想简单地获取所有内容,例如 db.collection.find({})跨度>
  • @Dillon :所以如果我理解正确 - 这些是独立的集合,它们之间没有任何关系?

标签: javascript node.js mongodb express mongodb-query


【解决方案1】:

您可以关注此代码

db.Cars.aggregate([

    {
        $lookup:{
            from:'Bike',
            localField:'Name',
            foreignField:'Name',
            as:'bikeInfo'

        }},

         { 
               $unwind:"$bikeInfo" 
          },


       { $lookup:{
            from:'Truck',
            localField:'Name',
            foreignField:'Name',
            as:'truck_info'


        }},

        {$unwind:"$truck_info" }


])

【讨论】:

  • 这会返回一个空的 [] 响应。
  • 你可以使用你的模型名.aggregate
猜你喜欢
  • 1970-01-01
  • 2017-03-25
  • 1970-01-01
  • 2017-04-03
  • 1970-01-01
  • 2018-03-18
  • 2021-07-23
  • 1970-01-01
  • 2020-05-13
相关资源
最近更新 更多