Эта функция работает как задумано.
static getUsersWithTasks = (ids) => {
const db = getDb();
return db
.collection(process.env.USERSCOLLECTION)
.aggregate([
{ $match: { _id: { $in: ids } } },
{
$project: {
password: 0,
tokens: 0,
spaces: 0,
incomingSpaceInvites: 0,
incomingFriendRequest: 0,
friends: 0
}
},
{
$lookup: {
from: "challenges",
let: { tasks: "$tasks" },
pipeline: [
{
$match: {
$expr: { $in: ["$_id", "$$tasks"] }
}
}
],
as: "populatedTasks"
}
}
])
.toArray();
};
Однако у некоторых пользователей есть только пустой массив tasks
, поскольку им еще предстоит создать задачу.
Если у пользователя поэтому есть пустой массив tasks
, то Я получаю ошибку mongodb, потому что $ in требует массив в качестве второго аргумента.
Если у всех пользователей есть значение в массиве tasks
, то все работает нормально.
Мой вопрос:
Есть ли способ пропустить фазу поиска, если этот пользователь tasks
массив пуст?
Спасибо за ваше время!