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

क्या मोंगो सी ड्राइवर में bson_iter_find में ऑर्डर मायने रखता है

सीधे अपने प्रश्न का उत्तर देने के लिए, आपको bson_iter_init (http://api.mongodb पर कॉल करना चाहिए। org/libbson/current/bson_iter_init.html ) डेटा के विरुद्ध आपके द्वारा की जा रही प्रत्येक "नई" क्वेरी के लिए।

संभवतः आपके पास bson_t ऑब्जेक्ट पर एक एकल bson_iter_init कॉल है। आपको बस एक और चाहिए।

   bson_iter_t iterator1;
   bson_iter_t iterator2;

   if (bson_iter_init (&iterator1, doc) &&
       bson_iter_find (&iterator1, "fieldA") ) {
       //Do something with fieldA
    }

   if (bson_iter_init (&iterator2, doc) &&
       bson_iter_find (&iterator2, "fieldB") ) {
       //Do something with fieldB
    }
    bson_free(doc); //DONT FORGET TO DESTROY THE BSON_T object at the end.

या, बस संयुक्त कमांड का उपयोग करें bson_iter_init_find (http://api.mongodb.org/ libbson/current/bson_iter_init_find.html ) अगर आप इंटर्नल से डील नहीं करना चाहते हैं।

   bson_iter_t iterator1;
   bson_iter_t iterator2;

   if (bson_iter_init_find (&iterator1, doc, "fieldA") ) {
       //Do something with fieldA
    }

   if (bson_iter_init_find (&iterator2, doc,"fieldB") ) {
       //Do something with fieldB
    }
    bson_free(doc); //DONT FORGET TO DESTROY THE BSON_T object at the end.

अगर आप इसमें दिलचस्पी रखते हैं, तो मैं bsonsearch पर काम करता हूं (https://github.com/bauman/bsonsearch ) पुस्तकालय और समान समस्याएं हैं।

आप पॉइंटर्स के साथ कैसे व्यवहार कर रहे हैं, इस पर बहुत सतर्क रहें। libbson में हुड के नीचे लगभग सब कुछ स्मृति में एक क्षेत्र में पॉइंटर्स में हेरफेर कर रहा है।

मैटर्स को ऑर्डर करने का कारण यह है कि आपने एक बार इनिशियलाइज़ किया था, जब आपने iter_find को कॉल किया था, तो libbson A का पता लगाने के लिए B की तलाश करेगा . बी को खोजने के लिए बाद की कॉल बफर के अंत की तलाश करेगी और इसे याद करेगी। आप पुनरावर्तक को स्थिति 0 पर पुन:प्रारंभ करके उस समस्या से बचते हैं और वहां से तलाश शुरू करते हैं।

जब तक आप ठीक से नहीं जानते कि आप क्या कर रहे हैं और बफर के आस-पास की तलाश को अनुकूलित करना चाहते हैं, तो शायद हर खोज के लिए इटरेटर को फिर से शुरू करना सबसे अच्छा है।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगोडीबी और मोंगोजेएस - पाठ प्रश्नों के लिए काम करने के लिए रन कमांड नहीं मिल सकता है

  2. पोस्टग्रेज 9.4 jsonb बुनियादी ऑपरेटरों से पूछताछ करता है

  3. MongoDB एकत्रीकरण:डबल लुकअप, और संबंधित ऑब्जेक्ट के लिए लुकअप प्रतिक्रिया मर्ज करें

  4. MongoDB मरम्मत आदेश विफल

  5. MongoDB एटलस से कनेक्ट करते समय 'त्रुटि:querySrv EREFUSED' को कैसे ठीक करें?