Вопрос

В моем документе есть поле массива Ключи

Ключи 1 и Ключи 2 это два массива

Мне нужны все документы, где Ключи содержит любое значение в Ключи 1 И любая ценность в Ключи 2

Это было полезно?

Решение

Пока нет отличного способа представить этот запрос (по состоянию на 1.1.2) - если вы зададите запрос в списке или отправите запрос функции, мы можем попытаться что-нибудь приготовить.

На данный момент, вероятно, лучше всего использовать запрос $ in для выполнения половины работы:

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

Вы можете сделать это в сочетании с $where, который может выполнять часть Keys2 (но не будет использовать преимущества индекса - вот почему полезно делать как можно больше с помощью обычного синтаксиса запроса).Это выглядело бы примерно так:

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+ вы можете сделать это с помощью $и operator.

db.test.find({$and:[{keys: {$in: Keys1}},{keys: {$in: Keys2}}]})
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top