Фильтрация массива $ project по другому файлу в другом массиве.
Это то, что у меня есть сейчас. Я попытался с фильтром в другом проекте $, но он возвращает пустой массив. Я также попытался сопоставить массив встреч с массивом идентификаторов и $filter
пользователей с $in: [ 'user._id', appointmentsIds ]
{
$match: {
provider_id: providerId,
},
},
{
$lookup: {
from: 'appointments',
localField: 'provider_id',
foreignField: 'provider_id',
as: 'appointments',
},
},
{
$project: {
_id: 1,
rate: 1,
provider_id: 1,
appointments: {
$filter: {
input: '$appointments',
as: 'appointment',
cond: {
$in: ['$$appointment.date', dates],
},
},
},
},
},
{
$lookup: {
from: 'fingerprints',
let: { id: '$_id' },
pipeline: [
{
$match: {
$expr: {
$in: ['$$id', '$visits.bussines_id'],
},
},
},
],
as: 'users',
},
},
{
$project: {
_id: 1,
rate: 1,
appointments: 1,
users: {
$filter: {
input: '$users',
as: 'user',
cond: {
$ne: ['$$user.user_id', { $toObjectId: '$provider_id' }],
},
},
},
},
},
{
$addFields: {
viewers: {
$map: {
input: '$users',
as: 'user',
in: {
visits: {
$filter: {
input: '$$user.visits',
as: 'visit',
cond: {
$in: ['$$visit.date', dates],
},
},
},
},
},
},
},
},
{
$project: {
_id: 0,
rate: 1,
viewers: { $size: '$viewers' },
appointmentsCount: { $size: '$appointments' },
users: 1,
appointments: 1,
},
},
Я хочу сохранить все поля, которые находятся в последнем $project
, и добавить другое поле с массивом users
, отфильтрованным по user_id
, который находится в appointments
массиве.