【发布时间】:2020-12-29 03:30:16
【问题描述】:
我需要查询与作业相关联的时间卡集合,而作业与具有特定设施 ID 的设施相关联。我有以下聚合查询:
Timecard.aggregate([
{ $match: query }, //some query parameters set before, doesn't matter here
{
$lookup: {
from: 'jobs',
as: 'job',
localField: 'job',
foreignField: '_id'
}
},
{ $unwind: '$job' },
{
$lookup: {
from: 'facilities',
localField: 'job.facilityId'
foreignField: '_id',
as: 'job.facilityId'
}
},
{ $unwind: '$job.facilityId' },
{ $match: {'job.facilityId._id':'5cad048d95d61a002f5a9edb'}}
];)
最后一次 $match 之前的一切工作正常,工作被填充到时间卡中,设施被填充到工作中。但是由于某种原因,匹配不起作用。但是,如果我添加 facilityId 字段与
{$addFields: {facilityId: '$job.facilityId._id'}}
并将 $match 更改为
{$match: 'facilityId':'5cad048d95d61a002f5a9edb'}
然后就可以了。 问题是,有没有办法以这种方式用点符号查询子文档的字段?
【问题讨论】:
标签: node.js mongodb mongoose aggregate