Sua solução parece quase correta, desde que
dateStart
e dateStart
são na verdade Date
objetos e não String
s. Sua Experiência 2 estava incompleto Não tenho certeza se usa o
$lookup
de Experimente 1 ou não. Nesse caso, você deve certificar-se de que a saída de $lookup
é o mesmo que a entrada de $filter
. Então você deve alterar as
em $lookup
para corresponder a input
de $filter
{
$lookup: {
from: "notifications",
localField: "accessToken",
foreignField: "accessToken",
as: "items" // here
}
}
Solução alternativa
Não tenho certeza do que você quer como saída. Se você precisar apenas de uma matriz de notificações sem o objeto de usuário, tente o seguinte.
[{
$match: { userId: mongoose.Types.ObjectId(userId) }
}, {
$lookup: {
from: "notifications",
localField: "accessToken", // don't forget to index register.accessToken
foreignField: "accessToken", // don't forget to index notification.accessToken
as: "notifications"
}
}, {
$unwind: "$notifications"
}, {
$match: {
dateCreated: { $gte: dateStart, $lte: dateEnd } // dateStart, dateEnd should be Date objects
}
}, { // optional, move notifications to top lvel
$replaceRoot: { root: '$notifications' }
}]