Din løsning ser næsten rigtig ud, forudsat at dateStart
og dateStart
er faktisk Date
objekter og ikke String
s.
Din Prøv 2 var ufuldstændig Jeg er ikke sikker på, at den bruger $lookup
fra Prøv 1 eller ikke. Hvis det er tilfældet, skal du sørge for outputtet af $lookup
er det samme som input af $filter
. Så du bør ændre as
i $lookup
for at matche input
af $filter
{
$lookup: {
from: "notifications",
localField: "accessToken",
foreignField: "accessToken",
as: "items" // here
}
}
Alternativ løsning
Jeg er ikke sikker på, hvad du vil have som output. Hvis du kun har brug for en række meddelelser uden brugerobjektet, kan du prøve følgende.
[{
$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' }
}]