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' }
}]