سؤال

يحتوي وثيقي على حقل صفيف مفاتيح

مفاتيح 1. و مفاتيح 2. هي صفيفان

أريد كل المستندات حيث مفاتيح يحتوي على أي قيمة في مفاتيح 1. و أي قيمة في مفاتيح 2.

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

المحلول

لا توجد طريقة رائعة تمثيل هذا الاستعلام حتى الآن (اعتبارا من 1.1.2) - إذا طلبت في القائمة أو تقديم طلب ميزة، فيمكننا أن نحاول الحصول على شيء مطبوخ.

في الوقت الحالي، من المحتمل أن يستخدم أفضل رهان لاستعلام دولارا بفعل نصف العمل:

db.test.find({keys: {$in: Keys1}})

يمكنك القيام بذلك بالاشتراك مع $ حيث يمكنك القيام بجزء المفاتيح 2 (ولكن لن يستفيد من الفهرس - ولهذا السبب من الجيد القيام بأكبر قدر ممكن من بناء جملة الاستعلام العادي). هذا سيبدو شيئا مثل هذا:

db.test.find({keys: {$in: Keys1}, $where: "for (i in this.keys) { for (j in Keys2) { if (this.keys[i] == Keys2[j]) return true;}} return false;"})

في أحدث إصدارات MongoDB 2.6+ يمكنك القيام بذلك حسب $ والشغل.

db.test.find({$and:[{keys: {$in: Keys1}},{keys: {$in: Keys2}}]})
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top