Su solución parece casi correcta, siempre que dateStart
y dateStart
son en realidad Date
objetos y no String
s.
Tu Prueba 2 estaba incompleto, no estoy seguro de que use el $lookup
desde Prueba 1 O no. Si es así, debe asegurarse de que la salida de $lookup
es lo mismo que la entrada de $filter
. Entonces deberías cambiar as
en $lookup
para coincidir con input
de $filter
{
$lookup: {
from: "notifications",
localField: "accessToken",
foreignField: "accessToken",
as: "items" // here
}
}
Solución alternativa
No estoy seguro de lo que quieres como salida. Si solo necesita una variedad de notificaciones sin el objeto de usuario, puede intentar lo siguiente.
[{
$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' }
}]