اذهب إلى المحتوى
  • 0

كيف أحصل على اسماء الحقول في مستند mongodb

Tamim Fahed

السؤال

عادةً عندما أرغب بالاطلاع على بنية مستند ما أقوم بإجراء استعلام عشوائي لإظهار الحقول الموجودة وأنواع البيانات. ولكن أرغب الآن بالحصول على اسماء جميع الحقول الموجود في مستند ما، فرضاً أن لدي الحقول التالية ضمن المستندات:

{ gen : ['comedy', 'action'] },
{ year : 2006 },
{ type : 'New' },
{ tags : ['AC','BB','COM']  }

هل يوجد طريقة استطيع من خلالها طباعة فقط اسماء هذه الحقول أي (gen, year, type, tags)؟ لأنني لا أريد الحصول على القيم بداخلها فقط اسماء الحقول.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

يمكنك من خلال mongodb نفسها دون الحاجة لاستخدام لغات البرمجة من إجراء تجميع للقيم aggregation وإظهار اسماء الحقول لمستند واحد ضمن مصفوفة بتنفيذ الاستعلام التالي:

aggregate([
  {"$match":{_id: "نضع هنا رقم أي مستند"}},
  {"$project":{"fieldNames":{"$objectToArray":"$$ROOT"}}},
  {"$project":{"keys":"$fieldNames.k"}}
])

أما في حال أردت استعادة جميع اسماء الحقول لكافة المستندات دون تكرارها، يمكنك تنفيذ التالي:

aggregate([
  {"$project":{"fieldNames":{"$objectToArray":"$$ROOT"}}},
  {"$unwind":"$fieldNames"},
  {"$group":{"_id":null,"allkeys":{"$addToSet":"$fieldNames.k"}}}
])

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

يمكنك إستخدام الإستعلام الآتي

mr = db.runCommand({
    "mapreduce": "my_collection",
    "map": function() {
        for (var key in this) {
            emit(key, null);
        }
    },
    "reduce": function(key, stuff) {
        return null;
    },
         "out": "my_collection" + "_keys"
})
 
db[mr.result].distinct("_id")

بحيث ستحصل على أسماء الحقول فقط

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...