如何在mongo $ lookup

时间:2019-06-04 22:07:51

标签: mongodb aggregation-framework

db.getCollection('raw_attom_recorder').aggregate([
  {
       $match:   {"RecordingDate": {
       $gte: ISODate("2018-01-01T00:00:00.000+0000")
       }}
  } ,
   { $sort : { AttomId : 1, RecordingDate: -1 }},
  { $group:{"_id":"$AttomId","recdata": { $first : "$$ROOT" }}
  },
  {
      $lookup:
          {
              from: "raw_attom_taxassessor",
              let: { attom_id: "$recdata.AttomId", rdate: "$recdata.RecordingDate" },
              pipeline: [
                  {
                      $match:
                          {
                              $expr:
                                  {
                                      $and:
                                          [
                                              { $eq: ["$AttomId", "$$attom_id"] }
                                          ]
                                  }
                          }
                  }

              ],
              as: "assessor"
          }
  },
  {"$unwind": {
                    "path": "$assessor",
                    "preserveNullAndEmptyArrays": true
                }
            },
   
  { $sort : { "recdata.AttomId" : 1, "assessor.AssessorLastSaleDate" : -1 }},
  { $group:{"_id":"_id","data": { $first : "$$ROOT" }}},
  {$project:{_id:0}},
 {$out:"test_assessor"}
  
],{allowDiskUse:true})

我正在使用$ lookup加入mongo中的两个集合。第二个集合对第一个集合中的每个ID都有多个记录,因此我想按日期对第二个集合进行排序,并且只对第一个集合中的每个ID都查找具有最新日期的记录。

我尝试对第二个集合进行排序和分组,但是在对两个集合运行整个查询之后,我最终只得到一个文档

我希望输出的文档数量与第一个集合中的数量相同

0 个答案:

没有答案