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

السؤال

نشر

لقد قمت بكتابة الاستعلام التالي للحصول على مستندات فيها مستندات أخرى كقيمة لحقل معيّن nested object:

chat.find( { message : { from: "test1" } } )

وقمت بكتابة نفس الاستعلام ولكن باستخدام المسارات  ( علامة النقطة . ) كالتالي:

chat.find( { 'message.from': "test1" }  )

ولكن كل استعلام أعطى نتيجة مختلفة عن الآخر، فالاستعلام الأول لم يقم بإعادة أي نتيجة أما الاستعلام الثاني أعاد 10 نتائج.

أليس من المفترض أن أحصل على نفس النتيجة في كلتا الحالتين؟ فباستخدام dot notation تم الوصول إلى نفس الحقل from

Recommended Posts

  • 0
نشر
بتاريخ 30 دقائق مضت قال Tamim Fahed:

chat.find( { message : { from: "test1" } } )

المشكلة هي أن الاستعلام الأول يقوم بإلبحث عن المستندات التي لها الحقل message يحوي الخاصية from مع قيمة الشرط فقط، أي يجب ألا يحوي هذا المستند أي خصائص أخرى داخل message سوى from.

أما في الاستعلام الثاني:

بتاريخ 31 دقائق مضت قال Tamim Fahed:

chat.find( { 'message.from': "test1" } )

يتم النظر فقط إلى قيمة 'message.from' ولا تتأثر النتيجة بأي حقول أخرى موجودة ضمن الغرض message أو أي حقول أخرى موجودة في المستند الرئيسي

لذلك سيتم إعادة نتائج مختلفة عند تطبيق كل منهما وفي حال عدم وجود أي مستند يحوي فقط خاصية واحدة from ضمن الغرض message ستكون النتيجة فارغة في الاستعلام الأول

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...