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都查找具有最新日期的记录。
我尝试对第二个集合进行排序和分组,但是在对两个集合运行整个查询之后,我最终只得到一个文档
我希望输出的文档数量与第一个集合中的数量相同