La tua soluzione sembra quasi corretta, a condizione che dateStart
e dateStart
sono in realtà Date
oggetti e non String
s.
Il tuo Try 2 era incompleto non sono sicuro che utilizzi il $lookup
da Prova 1 o no. Se è così devi assicurarti che l'output di $lookup
è lo stesso dell'input di $filter
. Quindi dovresti cambiare as
in $lookup
per abbinare input
di $filter
{
$lookup: {
from: "notifications",
localField: "accessToken",
foreignField: "accessToken",
as: "items" // here
}
}
Soluzione alternativa
Non sono sicuro di cosa vuoi come output. Se hai solo bisogno di un array di notifiche senza l'oggetto utente, puoi provare quanto segue.
[{
$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' }
}]