MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

मोंगोडब खोज ऑब्जेक्टिड के साथ काम नहीं कर रहा है

आपके वेबपेज आईडी स्ट्रिंग हैं, जबकि आप जिन _ids के साथ खोज रहे हैं वे ObjectIds हैं। आपकी खोज किसी भी परिणाम से मेल नहीं खाती क्योंकि परिणाम तालिका में ऐसे कोई दस्तावेज़ नहीं हैं जिनमें "webpageid" तत्व के लिए ObjectId मान हों।

जैसा कि मैं देख रहा हूं, दो समाधान हैं।

  1. आप webpageid के लिए स्ट्रिंग्स के बजाय ObjectIds स्टोर कर सकते हैं results में तत्व संग्रह। इसका कार्यान्वयन निश्चित रूप से इस बात पर आधारित है कि वे दस्तावेज़ संग्रह में कैसे आते हैं।
  2. आप दिए गए ObjectId<से एक स्ट्रिंग वैरिएबल बना सकते हैं /ए> इसके बजाय तुलना करने के लिए लूप के भीतर। उदाहरण के लिए,

    ...
    for(var i = 0; i < docs.length; i++) {
        var docId = docs[i]._id.toString(); // create a string
        db.get('results').findOne({'webpageid':docId}, function(err, doc)
        ...
    

यदि आप दूसरे विकल्प के साथ जाते हैं, तो आपको यह देखने की आवश्यकता हो सकती है कि webpageid की शुरुआत में एक प्रमुख उद्धरण क्यों है results . में दूसरे दस्तावेज़ के लिए मान संग्रह।

"webpageid" : "\"54960a916ecb16dc3c4880e8"

अंत में, मुझे आपकी आवश्यकताओं के बारे में ज्यादा जानकारी नहीं है, लेकिन आप समाधान के रूप में MongoDB पर पुनर्विचार करना चाह सकते हैं। ऐसा प्रतीत होता है कि आप जॉइन की तरह कुछ बना रहे हैं जो कुछ ऐसा है जो मोंगोडीबी को बहुत अच्छी तरह से संभालने के लिए डिज़ाइन नहीं किया गया है।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. किसी अन्य फ़ील्ड के मान का उपयोग करके MongoDB फ़ील्ड को अपडेट करें

  2. नेस्टेड सरणी अद्यतन करने के लिए MongoDB क्वेरी

  3. गंभीर त्रुटि:कक्षा 'मोंगो' C:\\Apache Software Foundation\Apache2.2\htdocs\sample\testdb.php में नहीं मिली

  4. Azure VM पर MongoDb से कनेक्शन टाइमआउट

  5. Model.find () नेवला में खाली लौटाता है