Pergunta

Meu doc ??tem um campo de matriz Chaves

Keys1 e Keys2 são duas matrizes

Eu quero que todos os documentos em que Chaves contém qualquer valor em Keys1 e qualquer valor em Keys2

Foi útil?

Solução

Não há grande maneira de representar esta consulta ainda (a partir de 1.1.2.) - se você perguntar na lista ou apresentar um pedido de recurso podemos tentar obter algo inventado

Por agora, a melhor aposta é provavelmente usar um $ em consulta para fazer metade do trabalho:

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

Você pode fazer isso em combinação com um $ em que o que pode fazer a parte Keys2 (mas não vai tirar proveito de um índice - é por isso que é bom para fazer, tanto quanto possível com a sintaxe de consulta regular). Isso seria algo parecido com isto:

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;"})

Em versões mais recentes do MongoDB 2.6+ você pode fazer isso em US $ e operador.

db.test.find({$and:[{keys: {$in: Keys1}},{keys: {$in: Keys2}}]})
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top