dateStart
であれば、ソリューションはほぼ正しく見えます およびdateStart
実際にはDate
String
ではなくオブジェクト s。
トライ2 不完全でした$lookup
を使用しているかどうかわかりません 試して1から か否か。その場合は、$lookup
の出力を確認する必要があります。 $filter
の入力と同じです 。したがって、as
を変更する必要があります $lookup
input
と一致する $filter
の
{
$lookup: {
from: "notifications",
localField: "accessToken",
foreignField: "accessToken",
as: "items" // here
}
}
代替ソリューション
出力として何が必要かわかりません。ユーザーオブジェクトなしで通知の配列のみが必要な場合は、次のことを試すことができます。
[{
$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' }
}]