मेरे नेवला एकत्रीकरण में, मुझे Unrecognized expression '$toObjectId'
के रूप में त्रुटि मिल रही है। मेरा MongoDB संस्करण 4.2.5 है और नेवला संस्करण 5.9.6 है। दस्तावेज़ीकरण के अनुसार, यह ऑपरेटर 4.x संस्करण में उपलब्ध है और आदर्श रूप से इसे काम करना चाहिए था।
const trips = await Tickets.aggregate([
{$match: {trip: Utils.strToObjectId(tripid) }},
{$project: {_id:0,status:1, bookedBy:1,name:1,totalFare:1, seats:1, mode:1 }},
{$group: {_id: {$toObjectId:"$bookedBy"}, bookings: {$push: {status: "$status", mode:"$mode", name: "$name", from: "$sourceCity", to: "$destinationCity", seats: "$seats" ,fare: "$totalFare", pnr: "$shortid" }} }},
{$lookup: {from:"users", localField:"bookedBy", foreignField:"_id",as:"user"}},
]);
मेरे मामले में बुक किया गया स्ट्रिंग में परिवर्तित हो जाता है जो $ लुकअप पाइपलाइन में मेल नहीं खाता है। इसलिए इसे हल करने के लिए मैं इसे ऑब्जेक्ट आईडी में बदलने की कोशिश कर रहा हूं।
किसी भी मदद के सुझाव की सराहना की जाती है।
2 जवाब
यदि आपको MongoDB द्वारा बनाई गई ऑब्जेक्ट आईडी तक पहुंचने में परेशानी हो रही है, तो आप अपनी अनूठी ऑब्जेक्ट आईडी क्यों नहीं बनाते और जहां चाहें वहां पहुंचें। इसका उपयोग करके आपको ऑब्जेक्ट आईडी में कनवर्ट करने के बारे में चिंता करने की आवश्यकता नहीं है। उदाहरण के लिए,
const MUUID = require('uuid-mongodb');
id: {
type: 'object',
unique: true,
default: () => MUUID.v1().toString(),
}
मैं अभी शुरुआत कर रहा हूँ। यदि मेरा उत्तर असुविधाजनक या अप्रासंगिक है तो मुझे खेद है। यह सिर्फ एक विचार है।धन्यवाद
मुझे यह समस्या थी और मैं दो दिनों से इसके साथ कुश्ती कर रहा था,
मेरे लिए समाधान यह सुनिश्चित कर रहा था कि मेरा MongoDB अद्यतित है,
मैं MLab.com पर अपनी मेजबानी कर रहा था जिसने मुझे Mongo 3.6 प्रदान किया, जबकि $toObjectId
केवल Mongo 4.0< br/>
मैंने अपने सर्वर को मोंगो एटलस में मुफ्त में माइग्रेट किया जिसने मुझे अद्यतित संस्करण प्रदान किया और सब कुछ सुचारू रूप से चला।
संबंधित सवाल
नए सवाल
node.js
Node.js एक घटना-आधारित, गैर-अवरोधक, अतुल्यकालिक I / O रनटाइम है जो Google के V8 जावास्क्रिप्ट इंजन और libuv लाइब्रेरी का उपयोग करता है। इसका उपयोग उन अनुप्रयोगों को विकसित करने के लिए किया जाता है जो क्लाइंट पर और साथ ही सर्वर साइड पर जावास्क्रिप्ट को चलाने की क्षमता का भारी उपयोग करते हैं और इसलिए कोड के पुन: प्रयोज्य और संदर्भ स्विचिंग की कमी से लाभान्वित होते हैं।
Utils.strToObjectId(tripid)
क्या लौटाता है? इसके अलावा, मुझे लगता है कि आपका$lookup
काम नहीं करता है क्योंकि आप$group
के बादbookedBy
फ़ील्ड को बनाए रखते हैं, आप चरण दर चरण हटा सकते हैं और जांच सकते हैं कि यह वास्तव में कहां विफल हो रहा है लेकिन मुझे लगता है कि समस्या नहीं है$group
..bookedBy
फ़ील्ड में क्या मान है? सिंटैक्स{ $group: { _id: { $toObjectId: "$bookedBy"}
सही है, इसे$group
के साथ प्रयोग किया जाता है।