Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MongoDB

MongoDB में अज्ञात कीज़ होने पर कैसे खोजें?

जब फील्ड नाम (कीज़) अज्ञात या डायनामिक हों, तो एग्रीगेशन में $objectToArray का उपयोग करके ऑब्जेक्ट को {k, v} जोड़े की सरणी में बदलें, फिर कीज़/मानों पर फ़िल्टर/मैच करें।

उदाहरण: डायनामिक कीज़ वाले दस्तावेज़

> db.demo375.insertOne({ "details":{ "Name":"John", "Age":23 } });
{ "acknowledged" : true, "insertedId" : ObjectId("5e5a0ae42ae06a1609a00b06") }
> db.demo375.insertOne({ "details":{ "Name":"David", "Age":21 } });
{ "acknowledged" : true, "insertedId" : ObjectId("5e5a0ae42ae06a1609a00b07") }
> db.demo375.insertOne({ "details":{ "Name":"David", "Age":22 } });
{ "acknowledged" : true, "insertedId" : ObjectId("5e5a0ae42ae06a1609a00b08") }

दस्तावेज़ देखना

> db.demo375.find();

आउटपुट: ज्ञात फील्ड्स के साथ तीन दस्तावेज़ (लेकिन मान लें कि कीज़ अज्ञात हैं)।

एग्रीगेशन: मान "David" वाली किसी भी कीज़ वाले दस्तावेज़ ढूंढें

> db.demo375.aggregate([
    { "$addFields": { "UnknownKeys": { "$objectToArray": "$$ROOT" } } },
    { "$match": { "UnknownKeys.v.Name": "David" } },
    { "$project": { "UnknownKeys": 0 } }
]);

परिणाम

दो दस्तावेज़ लौटाए गए जहां किसी भी नेस्टेड फील्ड Name = "David" है।

चरण व्याख्या

  1. $objectToArray ("$$ROOT"): पूरे दस्तावेज़ को {k, v} सरणी में बदलता है (शीर्ष-स्तरीय फील्ड्स + नेस्टेड)।
  2. $match on UnknownKeys.v.Name: सरणी में किसी भी v.Name == "David" की जांच करता है।
  3. $project: सहायक फील्ड हटाता है।

विचार

  • $$ROOT पूरे दस्तावेज़ को प्रोसेस करता है; बड़े दस्तावेज़ों के लिए, विशिष्ट सब-ऑब्जेक्ट को लक्षित करें: {$objectToArray: "$details"}।
  • प्रदर्शन: यह पूर्ण संग्रह स्कैन करता है; ज्ञात फील्ड्स पर इंडेक्स का उपयोग नहीं कर सकता।
  • <ली>स्कीमा डिज़ाइन के लिए, पूरी तरह से डायनामिक कीज़ के बजाय ज्ञात फील्ड्स या सरणी-ऑफ-ऑब्जेक्ट्स पैटर्न पसंद करें।
  1. - C++ प्रोग्राम: दी गई शर्त के तहत X और Y के अंतिम मान ज्ञात करना

    मान लें हमारे पास दो धनात्मक पूर्णांकों X और Y के प्रारंभिक मान हैं। X और Y के अंतिम मान ज्ञात करें, जैसे कि नीचे वर्णित कुछ परिवर्तन होंगे: चरण 1 - यदि X = 0 और Y = 0 तो प्रक्रिया समाप्त करें, अन्यथा चरण 2 पर जाएं = 2Y, तो X = X - 2Y सेट करें, और चरण 1 पर जाएं, अन्यथा चरण 3 पर जाएं = 2X, तो Y = Y

  1. MongoDB संग्रह से सभी फील्ड नाम कुशलतापूर्वक पुनर्प्राप्त करें MongoDB संग्रह से सभी फील्ड नाम कुशलतापूर्वक पुनर्प्राप्त करें

    परिचय मूल रूप से 18 जनवरी, 2019 को ObjectRocket.com/blog पर प्रकाशित। अपने स्कीमा को मान्य करने के लिए, फील्ड में टाइपो डीबग करने के लिए, या उन फील्ड को ढूंढने के लिए जिन्हें आप सेट नहीं करना चाहिए, आपको अपने MongoDB® संग्रह में सभी कुंजियों की समझ की आवश्यकता है। ObjectRocket सहित कई MongoDB-as-a-

  1. अपने MongoDB कलेक्शन में सभी की नाम आसानी से प्राप्त करें अपने MongoDB कलेक्शन में सभी की नाम आसानी से प्राप्त करें

    अपने स्कीमा को मान्य करने, फील्ड्स में टाइपो डीबग करने, या उन फील्ड्स को ढूंढने के लिए जो सेट नहीं होने चाहिए, आपको अपने MongoDB कलेक्शन में सभी कीज़ की समझ प्राप्त करने की आवश्यकता होगी। MongoDB-as-a-service कंपनियों में से कई, ObjectRocket सहित, UI में सीधे ऐसा करने का एक आसान तरीका प्रदान करती ह