如何在mongodb中的$ match和$ lookup中使用$ ne

我有3个收藏集,如下所示:

  1. 医生。
  2. professionalDetails
  3. 约会

我希望所有不包括在约会集合中的医生可用约会。 我尝试了以下查询,并从几个小时开始研究它:

  const appointments = await Doctor.aggregate([
            {$match: {role: 'DOCTOR',_id: ObjectId(doctorId)}},{
              $lookup: {
                from: 'professionalDetails',localField: '_id',foreignField: 'doctorId',as: 'professionalDetails'
              }
            },{
              $lookup: {
                from: 'appointments',as: 'appointments'
              }
            },{$unwind: "$professionalDetails"},{$unwind: "$professionalDetails.schedule"},{$match: {'professionalDetails.schedule.day': 'Tuesday'}},{$unwind: "$professionalDetails.schedule.timmings"},{$unwind: "$appointments"},{$match: {'professionalDetails.schedule.timmings._id': {$ne: 'appointments.slotId'}}},{
              $project: {
                _id: 0,time: '$professionalDetails.schedule.timmings.slot',_id: '$professionalDetails.schedule.timmings._id'
              }
            }
          ]);

以上内容仍返回所有插槽。 但是,如果我按如下所示对不相等的匹配进行硬编码,则它会起作用:

{$match: {'professionalDetails.schedule.timmings._id': {$ne: ObjectId('5dd2a9cab4a4a32c9359ac1f')}}}

在猫鼬模型中,这两个id都是对象ID,而不是字符串。

我很陌生。指导真的很感激!

请帮助! 预先感谢!

kuerrcn 回答:如何在mongodb中的$ match和$ lookup中使用$ ne

我尝试按照汤姆的建议添加$ appointments.slotId,但这还是没有解决。

尝试并环顾四周后。最终,将match语句替换为以下内容后,得到了我想要的输出:

{{1}}

仍然欢迎任何改进或建议!

本文链接:https://www.f2er.com/3072547.html

大家都在问