![](/img/trans.png)
[英]MongoDB $lookup on 2 level nested document without using $unwind
[英]MongoDB: $match on a nested document after $lookup
我需要查詢與作業相關聯的考勤卡集合,而作業則與具有特定設施 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 之前的一切工作正常,工作被填充到考勤卡中,設施被填充到工作中。 但比賽由於某種原因不起作用。 但是,如果我添加 factoryId 字段
{$addFields: {facilityId: '$job.facilityId._id'}}
並將 $match 更改為
{$match: 'facilityId':'5cad048d95d61a002f5a9edb'}
那么它的工作原理。 問題是,有沒有辦法以這種方式用點表示法查詢子文檔的字段?
您的最后一行可能需要是 ObjectId
{ $match: {'job.facilityId._id': ObjectId('5cad048d95d61a002f5a9edb')}}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.