Domanda

Il mio doc ha un campo di matrice Chiavi

Keys1 e Keys2 sono due array

Voglio che tutti i documenti in cui Chiavi contiene qualsiasi valore in Keys1 e qualsiasi valore in Keys2

È stato utile?

Soluzione

Non c'è ottimo modo di rappresentare questa query ancora (come del punto 1.1.2) - se si chiede sulla lista o presentare una richiesta di funzionalità che possiamo cercare di ottenere qualcosa di cucinato

.

Per ora il migliore è probabilmente quello di utilizzare un $ nella query di fare metà del lavoro:

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

Si può fare questo in combinazione con un $ dove che può fare la parte Keys2 (ma non si avvarranno di un indice - è per questo che è bene fare il più possibile con la sintassi di query regolare). Questo sarebbe simile a questa:

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

In tutte le versioni di MongoDB 2.6+ si può fare questo da $ e operatore.

db.test.find({$and:[{keys: {$in: Keys1}},{keys: {$in: Keys2}}]})
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top