Mongodb: como usar uma consulta “not in”


Você pode usar a seguinte sintaxe para localizar todos os documentos onde o valor de um determinado campo não está em uma determinada lista de valores:

 db.collection.find({field1: { $nin : [" value1 ", " value2 ", " value3 "]}}) 

Esta consulta específica procura todos os documentos nos quais o valor do campo 1 não é igual a valor1, valor2 ou valor3.

Os exemplos a seguir mostram como usar essa sintaxe na prática.

Exemplo 1: Consulta “NOT IN” com um valor

Vamos supor que temos uma equipe de cobrança com os seguintes documentos:

 db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 31 })
db.teams.insertOne({team: " Spurs ", position: " Guard ", points: 22 })
db.teams.insertOne({team: " Rockets ", position: " Center ", points: 19 })
db.teams.insertOne({team: " Warriors ", position: " Forward ", points: 26 })
db.teams.insertOne({team: " Cavs ", position: " Guard ", points: 33 })

Podemos usar o seguinte código para encontrar todos os documentos onde o campo “team” não é igual ao valor “Rockets”:

 db.teams.find({team: { $nin : [" Rockets "]}}) 

Esta consulta retorna os seguintes documentos:

 { _id: ObjectId("619527e467d6742f66749b72"),
  team: 'Cavs',
  position: 'Guard',
  points: 33 }

{ _id: ObjectId("619527e467d6742f66749b6e"),
  team: 'Mavs',
  position: 'Guard',
  points: 31 }

{ _id: ObjectId("619527e467d6742f66749b6f"),
  team: 'Mavs',
  position: 'Guard',
  points: 22 }

Observe que os únicos documentos retornados são aqueles onde o campo “team” não é igual a “Rockets”.

Exemplo 2: Consulta “NON IN” com uma lista de valores

Vamos supor que temos uma equipe de cobrança com os seguintes documentos:

 db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 31 })
db.teams.insertOne({team: " Spurs ", position: " Guard ", points: 22 })
db.teams.insertOne({team: " Rockets ", position: " Center ", points: 19 })
db.teams.insertOne({team: " Warriors ", position: " Forward ", points: 26 })
db.teams.insertOne({team: " Cavs ", position: " Guard ", points: 33 })

Podemos usar o seguinte código para encontrar todos os documentos onde o campo “team” não é igual ao valor “Rockets” ou “Cavs”:

 db.teams.find({team: { $nin : [" Rockets ", " Cavs "]}}) 

Esta consulta retorna os seguintes documentos:

 { _id: ObjectId("619527e467d6742f66749b6e"),
  team: 'Mavs',
  position: 'Guard',
  points: 31 }

{ _id: ObjectId("619527e467d6742f66749b6f"),
  team: 'Mavs',
  position: 'Guard',
  points: 22 }

Observe que os únicos documentos retornados são aqueles onde o campo “team” não é igual a “Rockets” ou “Cavs”.

Nota : Você pode encontrar a documentação completa da função $nin aqui .

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras operações comuns no MongoDB:

MongoDB: Como consultar com uma expressão regular “Like”
MongoDB: Como verificar se o campo contém uma string
MongoDB: Como adicionar um novo campo a uma coleção
MongoDB: Como remover um campo de cada documento

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *