Solusi Anda terlihat hampir benar, asalkan dateStart
dan dateStart
sebenarnya Date
objek dan bukan String
s.
Coba 2 . Anda tidak lengkap Saya tidak yakin itu menggunakan $lookup
dari Coba 1 atau tidak. Jika demikian Anda harus memastikan output dari $lookup
sama dengan input $filter
. Jadi, Anda harus mengubah as
di $lookup
untuk mencocokkan input
dari $filter
{
$lookup: {
from: "notifications",
localField: "accessToken",
foreignField: "accessToken",
as: "items" // here
}
}
Solusi Alternatif
Saya tidak yakin apa yang Anda inginkan sebagai output. Jika Anda hanya membutuhkan serangkaian notifikasi tanpa objek pengguna, Anda dapat mencoba yang berikut ini.
[{
$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' }
}]