आपका समाधान लगभग सही दिखता है, बशर्ते कि dateStart
और dateStart
वास्तव में Date
हैं ऑब्जेक्ट्स और नहीं String
एस.
आपका कोशिश करें 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' }
}]