متى يتم الفهرس على مفاتيح متعددة في Mongodb
-
26-09-2019 - |
سؤال
قل لدي مستند عنصر مع: السعر و: الحقول الكمية. أرغب أحيانًا في العثور على جميع المستندات المطابقة مع المعطى: Price و: Qty ، وفي أوقات أخرى سيكون إما: السعر من تلقاء نفسه أو: Qty من تلقاء نفسه.
لقد قمت بالفعل بفهرسة: السعر و: مفاتيح Qty ، لكن هل أحتاج أيضًا إلى إنشاء فهرس مركب على حد سواء أو هل فهارس المفاتيح الفردية كافية؟
تحرير: لقد وجدت هذا المقال على موقع MongoDB مفيد جدًا:
المحلول
فهرس على price
يساعد في الاستعلامات على price
. فهرس على qty
يساعد في الاستعلامات على qty
. فهرس على price
و qty
يساعد في الاستعلامات على price
والاستعلامات على price
و qty
. لذلك ، يشبه الحصول على فهسين لسعر واحد. لن يساعد في الاستفسارات qty
, ، رغم ذلك.
يجب عليك تقليل عدد الفهارس التي لديك ، لذا قم بإسقاط أحد فهارس المفتاح الواحد وإنشاء فهرس مركب يبدأ بهذا المفتاح.
كقاعدة عامة ، إذا كنت تقوم باستعلام على x
, y
, ، و z
, ، يجب أن يكون لديك فهرس مثل {x:1, y:1, z:1}
. سيجعل هذا الفهرس الاستعلامات التالية بسرعة:
db.foo.find({x : ..., y : ..., z : ...})
db.foo.find({x : ..., y : ...})
db.foo.find({x : ...})
لن يجعل هذه الاستفسارات سريعة:
db.foo.find({y : ..., z : ...})
db.foo.find({y : ...})
لذلك ، تأكد من أن الاستعلام الخاص بك يحتوي على مفتاح (ق) بدء الفهرس فيه.
نصائح أخرى
إذا كنت بحاجة إلى: السعر من تلقاء نفسه أو: Qty من تلقاء نفسه ، فلن يعمل فهرس المركب.