Mongodb: como consultar “não nulo”? em uma área específica


Você pode usar a seguinte sintaxe para localizar todos os documentos para os quais um campo específico não é nulo no MongoDB:

 db.collection.find({" field_name ":{ $ne : null }}) 

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

Exemplo 1: Consulta “não nulo” em um campo específico

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

 db.teams.insertOne({team: " Mavs ", position: null , points: 31 })
db.teams.insertOne({team: " Spurs ", position: " Guard ", points: 22 })
db.teams.insertOne({team: " Rockets ", position: null , 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 “posição” não é nulo:

 db.teams.find({" position ":{ $ne : null }})

Esta consulta retorna os seguintes documentos:

 { _id: ObjectId("618bf18f35d8a762d3c28717"),
  team: 'Spurs',
  position: 'Guard',
  points: 22 }

{ _id: ObjectId("618bf18f35d8a762d3c28719"),
  team: 'Warriors',
  position: 'Forward',
  points: 26 }

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

Observe que os únicos documentos retornados são aqueles cujo campo “posição” não é nulo.

Exemplo 2: Consulta “not null” (quando todos os documentos não contêm o campo)

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

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

Observe que o segundo documento da coleção nem possui o campo “posição”.

Podemos usar o seguinte código para encontrar todos os documentos onde o campo “posição” não é zero:

 db.teams.find({" position ":{ $ne : null }})

Esta consulta retorna os seguintes documentos:

 { _id: ObjectId("618bf18f35d8a762d3c28719"),
  team: 'Warriors',
  position: 'Forward',
  points: 26 }

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

Como o segundo documento nem possui o campo “posição”, ele não é retornado.

Observe também que os outros dois documentos que possuem valor nulo no campo “posição” também não são retornados.

Resumo : Usando a sintaxe $ne:null , retornamos apenas documentos para os quais existe um campo específico e não é nulo.

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 *