簡體   English   中英

MongoDB:$lookup 后嵌套文檔上的 $match

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM