استعلام MongoDB: الحقل إما غير موجود أو له قيمة محددة

StackOverflow https://stackoverflow.com/questions/4605799

  •  25-09-2019
  •  | 
  •  

سؤال

أرغب في الاستعلام عن مجموعة Mongo للسجلات التي لا تملك قيمة لحقل يسمى "مخطط" ، أو لديك بشكل صريح قيمة "HTTP" لـ "المخطط". تبدو سهلة للغاية ، لكن هذه المشكلة أثبتت أنها أكثر تعقيدًا مما تظهر لأول مرة.

حيث db.collection.find({'scheme': None}) إرجاع جميع السجلات التي يكون فيها "المخطط" غير محدد (لا يوجد حقل فهرس) ، افترضت في البداية أن ما يلي سيعمل:

db.collection.find({'scheme': {'$in': ['http', None]}})

ومع ذلك ، يبدو أن هذا يستبعد القيم التي يكون فيها "المخطط" غير محدد ، لذلك لا يمكنني إلا أن أفترض أنه يبحث عن السجلات التي يكون فيها المخطط إما "http" None. يبدو أن هذا غير بديهي بعض الشيء ، ولكن هناك. كانت محاولتي الثانية ما يلي:

db.collection.find( {'$or': [{'scheme': {'$exists': False}}, {'scheme': 'http'}]})

هذا يستبعد أيضًا النتيجة حيث يكون المخطط غير محدد. هذه المرة ، لا يمكنني حتى التفكير في سبب منطقي يجعل هذا الفشل.

أي أفكار لماذا هذا فشل ، وكيف يمكنني الحصول عليها للعمل كما هو مطلوب؟

شكرًا

تحرير: فقط اعتقدت أنني لاحظت أنني أقوم بهذا الاستعلام من خلال بيثون (Pymongo) ، وهو ما يفسر None (فوق جافا سكريبت null)

هل كانت مفيدة؟

المحلول

تم حلها: يبدو أن هذه مسألة من إصدار MongoDB (1.4.4) ، يتم حل المشكلة في 1.6.5.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top