Mongodb: como consultar com expressão regular “like”


Você pode usar os seguintes métodos para consultar o MongoDB com uma expressão regular “semelhante”:

Método 1: Encontre documentos que contenham uma string

 db.collection.find({ name : { $regex : /string/i }})

Observe que o i indica uma correspondência que não diferencia maiúsculas de minúsculas.

Método 2: Encontre documentos começando com uma string

 db.collection.find({ name : { $regex : /^string/i }}) 

Método 3: Encontre documentos que terminem com uma string

 db.collection.find({ name : { $regex : /string$/i }}) 

Os exemplos a seguir mostram como usar cada método com uma equipe de coleta 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 })

Exemplo 1: Pesquise documentos contendo uma string

Podemos usar o seguinte código para procurar todos os documentos que contenham a string “avs” no campo team:

 db.teams.find({ team : { $regex : /avs/i }})

Esta consulta retorna os dois documentos a seguir:

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

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

Exemplo 2: Encontre documentos começando com uma string

Podemos usar o seguinte código para pesquisar todos os documentos que começam com a string “gua” no campo de posição:

 db.teams.find({ position : { $regex : /^gua/i }})

Esta consulta retorna os três documentos a seguir:

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

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

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

Exemplo 3: Encontre documentos que terminam com uma string

Podemos usar o seguinte código para encontrar todos os documentos que terminam com a string “ward” no campo de posição:

 db.teams.find({ position : { $regex : /ward$/i }})

Esta consulta retorna o seguinte documento:

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

Nota : Você pode encontrar a documentação completa do $regex aqui .

Add a Comment

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