在$ lookup和$ pipeline中的两个日期之间过滤

时间:2019-06-27 08:37:51

标签: mongodb mongoose

我有以下$ lookup,在这里我试图$ match'creator','status',并且它是在两个日期之间创建的。前两个可以完美地工作,但是当涉及对'createdAt'进行过滤时,它不起作用。

{
        $lookup: {
            from: "customers",
            let: { user: "$_id" },
            pipeline: [
                { 
                    $match: { 
                        $expr: { 
                            $and: [
                                {$eq: ['$creator', '$$user']},
                                {$in: ['$status', ['ny', 'pågår', 'vunnet']]},
                                {$gte: ['$createdAt', moment(a).startOf('day').toISOString()]},
                                {$lte: ['$createdAt', moment(b).startOf('day').toISOString()]},
                            ],
                        },

                    }
                },
                { $project: { _id: 0, name: 0, startedAt: 0 } },
            ],
            as: "customers"
        }
    },

我在做什么错?我尝试使用另一个$match,但它不起作用:

{
   $match: {
     'date': { 
        $gte: moment(a).startOf('day').toDate(),
        $lte: moment(b).startOf('day').toDate(),
     }
   }
},

我还尝试在$expr

中使用两个过滤器
{'createdAt': {
    $gte: ['$createdAt', moment(a).startOf('day').toDate()],
}},
{'createdAt': {
  $lte: ['$createdAt', moment(b).startOf('day').toDate()],
}},

0 个答案:

没有答案