আপনার স্কিমা যাচাই করার জন্য, ক্ষেত্রগুলিতে টাইপোর জন্য ডিবাগ করতে বা সেট করা উচিত নয় এমন ক্ষেত্রগুলি খুঁজে পেতে, আপনাকে আপনার MongoDB সংগ্রহের সমস্ত কীগুলির বোঝার প্রয়োজন হবে৷
অনেক MongoDB-এ-সার্ভিস কোম্পানি অবজেক্ট রকেট সহ UI-তে এটি করার একটি সহজ উপায় অফার করে। অভিজ্ঞ MongoDB ব্যবহারকারীরা সাধারণত অবজেক্ট-ডকুমেন্ট ম্যাপার (ODM) দিয়ে শুরু করে, যেমন JS-এর জন্য Mongoose বা Python-এর জন্য Mongoengine, যাতে তারা তাদের প্রয়োগের জন্য একটি সামঞ্জস্যপূর্ণ স্কিমা তৈরি করতে পারে এবং টাইপো কমাতে পারে। (ওডিএমগুলি টাইপ যাচাইকরণও করে, তাই আপনি ভুলবশত এমন কোনও ক্ষেত্রে স্ট্রিং লাগাচ্ছেন না যেখানে পূর্ণসংখ্যা রয়েছে এবং এটিতে গণিত প্রয়োগ করা হয়েছে।)
আপনার যদি কোনো পরিষেবা বা ODM না থাকে, তাহলে আপনি কীগুলি অ্যাক্সেস করতে ব্যবহার করতে পারেন এমন আরও কয়েকটি পদ্ধতি রয়েছে। বিভিন্ন পরিস্থিতিতে একটি MongoDB সংগ্রহে সমস্ত কী পেতে আমরা খুঁজে পেয়েছি সেরা উপায়গুলি এখানে।
একটি উদাহরণ
db.activities.insert( { type : [‘indoor’, 'outdoor' , ‘mixed’] } );
db.activities.insert( { activity : 'cycling' } );
db.activities.insert( { activity : ‘skiing’, location: ‘Alpes’, } );
db.activities.insert( { equipment : [‘paddles’,‘sunglasses’] } );
আপনি অনন্য কী পেতে চান:
প্রকার, কার্যকলাপ, সরঞ্জাম, অবস্থান
MapReduce
আপনি MapReduce দিয়ে এটি করতে পারেন:
mr = db.runCommand({ "mapreduce" : "activities", "map" : function() { for (var key in this) { emit(key, null); } }, "reduce" : function(key, stuff) { return null; }, "out": "activities" + "_keys" })
এটি সম্পূর্ণ হয়ে গেলে, সমস্ত কীগুলি খুঁজে পেতে ফলাফল সংগ্রহে স্বতন্ত্র কমান্ডটি চালান:
db.activities_keys.distinct("_id")
আপনি যদি একটি সাবডকুমেন্টে সমস্ত অনন্য কীগুলির একটি তালিকা পেতে চান তবে এই লাইনটি পরিবর্তন করুন:
for (var key in this.first_level.second_level.nth_level) { emit(key, null); }
সমষ্টি
আপনি একত্রিতকরণ ব্যবহার করতে পারেন। এই পদ্ধতিটি সমস্ত ড্রাইভারের সাথে কাজ করে যা সামগ্রিক কাঠামোকে সমর্থন করে। আপনার সমষ্টি সহ, $sample অথবা $সীমা ওভারহেড কমাতে ব্যবহার করা যেতে পারে।
দ্রষ্টব্য:প্রাথমিক পঠন পছন্দের সাথে চালানো কর্মক্ষমতা প্রভাবিত করতে পারে। সেকেন্ডারি রিড পছন্দ নিয়ে দৌড়ানোর কথা বিবেচনা করুন।
$objectToArrray এর সাথে সমষ্টি ব্যবহার করুন (3.4.4 সংস্করণে উপলভ্য) সমস্ত শীর্ষ কী এবং মান জোড়াকে ডকুমেন্ট অ্যারেতে রূপান্তরিত করার জন্য $unwind এবং $group $addToSet এর সাথে সম্পূর্ণ সংগ্রহ জুড়ে স্বতন্ত্র কী পেতে।
$$ROOT শীর্ষ স্তরের নথি উল্লেখ করার জন্য।
db.activities.aggregate([ {"$project":{"arrayofkeyvalue":{"$objectToArray":"$$ROOT"}}}, {"$unwind":"$arrayofkeyvalue"}, {"$group":{"_id":null,"allkeys":{"$addToSet":"$arrayofkeyvalue.k"}}} ])
একক নথিতে কী পান
আপনি একটি একক নথিতে কী পেতে সমষ্টি ব্যবহার করতে পারেন:
db.activities.aggregate([ {"$project":{"arrayofkeyvalue":{"$objectToArray":"$$ROOT"}}}, {"$project":{"keys":"$arrayofkeyvalue.k"}} ])
মঙ্গো শেল
আপনি মঙ্গো শেল ক্লায়েন্টের অধীনেও এটি চেষ্টা করতে পারেন:
var allKeys = {}; db.YOURCOLLECTION.find().forEach(function(doc){Object.keys(doc).forEach(function(key){allKeys[key]=1})}); allKeys;
একটি নথির জন্য আউটপুট ক্ষেত্রগুলি
আপনার যদি একটি সংগ্রহে একটি একক নথির জন্য ক্ষেত্রগুলির আউটপুট প্রয়োজন হয় (যেহেতু অন্য সকলের সম্পূর্ণ আলাদা কী থাকতে পারে) নিম্নলিখিতগুলি ব্যবহার করুন:
doc=db.thinks.findOne(); for (key in doc) print(key);
পাইথন
অথবা, আপনি পাইথন ব্যবহার করতে পারেন। এটি সংগ্রহের সমস্ত শীর্ষ-স্তরের কীগুলির সেট ফিরিয়ে দেয়:
#Using pymongo and connection named 'db' reduce( lambda all_keys, rec_keys: all_keys | set(rec_keys), map(lambda d: d.keys(), db.things.find()), set() )
জাভাস্ক্রিপ্ট
অথবা, আপনি JavaScript ব্যবহার করতে পারেন:
db.collection('collectionName').mapReduce( function() { for (var key in this) { emit(key, null); } }, function(key, stuff) { return null; }, { "out": "allFieldNames" }, function(err, results) { var fields = db.collection('allFieldNames').distinct('_id'); fields .then(function(data) { var finalData = { "status": "success", "fields": data }; res.send(finalData); delteCollection(db, 'allFieldNames'); }) .catch(function(err) { res.send(err); delteCollection(db, 'allFieldNames'); }); });
নতুন তৈরি করা সংগ্রহ "allFieldNames" পড়ার পরে, এটি মুছুন।
db.collection("allFieldNames").remove({}, function (err,result) { db.close(); return; });
অনেক অপশন…
এই মঙ্গো কীগুলি পেতে আপনার কাছে অনেকগুলি বিকল্প রয়েছে! আপনি যদি MongoDB ব্যবস্থাপনায় অভিভূত হন এবং ডাটাবেস পরিচালনার পরিবর্তে আপনার কোডের উপর ফোকাস করতে চান, আমরা আপনার জন্য এখানে আছি। আমাদের ডাটাবেস প্ল্যাটফর্ম এবং আমাদের সাদা গ্লাভ সমর্থন বিনামূল্যে একটি চেষ্টা করুন.