Din lösning ser nästan rätt ut, förutsatt att dateStart och dateStart är faktiskt Date objekt och inte String s.
Din Prova 2 var ofullständig Jag är inte säker på att den använder $lookup från Prova 1 eller inte. Om så är fallet måste du se till att utdata från $lookup är samma som inmatning av $filter . Så du bör ändra as i $lookup för att matcha input av $filter
{
$lookup: {
from: "notifications",
localField: "accessToken",
foreignField: "accessToken",
as: "items" // here
}
}
Alternativ lösning
Jag är inte säker på vad du vill ha som utdata. Om du bara behöver en rad aviseringar utan användarobjektet kan du prova följande.
[{
$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' }
}]