MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Correspondendo a um campo de matriz que contém qualquer combinação da matriz fornecida no MongoDB


Você pode fazer isso combinando vários operadores:
db.test.find({tags: {$not: {$elemMatch: {$nin: ['Rad', 'Cool']}}}})

O $elemMatch com o $nin é encontrar os documentos onde uma única tags elemento não é 'Rad' nem 'Cool', e então o pai $not inverte a correspondência para retornar todos os documentos em que não correspondeu a nenhum elemento.

No entanto, isso também retornará documentos onde tags está faltando ou não tem elementos. Para excluir aqueles, você precisa adicionar um qualificador que garanta tags tem pelo menos um elemento:
db.test.find({
    tags: {$not: {$elemMatch: {$nin: ['Rad', 'Cool']}}},
    'tags.0': {$exists: true}
})