Menu Docs
Página inicial do Docs
/ / /
Java síncrono
/ /

Especificar uma query

Nesta página

  • Visão geral
  • Operadores de comparação
  • Operadores lógicos
  • Operadores de array
  • Operadores de elementos
  • Operadores de avaliação

Neste guia, você pode aprender como especificar uma consulta no driver Java do MongoDB.

A maioria das operações CRUD permite que você restrinja o definir de documentos correspondentes especificando critérios correspondentes em um filtro de query. Os filtros de query contêm um ou mais operadores de query que se aplicam a campos específicos que determinam quais documentos incluir no conjunto de resultados.

Nesta página, abordamos os seguintes operadores de query com exemplos sobre como usá-los:

Os exemplos deste guia utilizam os seguintes documento na collection paint_purchases :

{ "_id": 1, "color": "red", "qty": 9, "vendor": ["A", "E"] }
{ "_id": 2, "color": "purple", "qty": 8, "vendor": ["B", "D", "F"], "rating": 5 }
{ "_id": 3, "color": "blue", "qty": 5, "vendor": ["A", "E"] }
{ "_id": 4, "color": "white", "qty": 6, "vendor": ["D"], "rating": 9 }
{ "_id": 5, "color": "yellow", "qty": 4, "vendor": ["A", "B"] }
{ "_id": 6, "color": "pink", "qty": 3, "vendor": ["C"] }
{ "_id": 7, "color": "green", "qty": 8, "vendor": ["C", "E"], "rating": 7 }
{ "_id": 8, "color": "black", "qty": 7, "vendor": ["A", "C", "D"] }

Os operadores de comparação query dados com base em comparações com valores em uma collection. Os operadores de comparação comuns incluem gt() para comparações "maior que", lte() para comparações "menor que ou igual a" e ne() para comparações "não igual a ".

O exemplo a seguir usa o método Filters.gt() para corresponder a todos os documentos em que o valor de qty é maior que 7 na collection paint_purchases :

Bson filter = Filters.gt("qty", 7);
collection.find(filter).forEach(doc -> System.out.println(doc.toJson()));

O seguinte mostra a saída da query anterior:

{ "_id": 1, "color": "red", "qty": 9, "vendor": ["A", "E"] }
{ "_id": 2, "color": "purple", "qty": 8, "vendor": ["B", "D", "F"], "rating": 5 }
{ "_id": 7, "color": "green", "qty": 8, "vendor": ["C", "E"], "rating": 7 }

Os operadores lógicos query dados usando lógica aplicada aos resultados de operadores de nível de campo. Os operadores lógicos comuns incluem and() , em que todos os operadores devem ser verdadeiros, e or() , em que pelo menos um dos operadores deve ser verdadeiro.

O exemplo a seguir usa o método Filters.and() para corresponder a documentos em que o valor de qty é menor ou igual a 5 e o valor de color não é "pink" na collection paint_purchases :

Bson filter = Filters.and(Filters.lte("qty", 5), Filters.ne("color", "pink"));
collection.find(filter).forEach(doc -> System.out.println(doc.toJson()));

O seguinte mostra a saída da query anterior:

{ "_id": 3, "color": "blue", "qty": 5, "vendor": ["A", "E"] }
{ "_id": 5, "color": "yellow", "qty": 4, "vendor": ["A", "B"] }

Os operadores de array fazem query aos dados com base no valor ou na quantidade de elementos em um campo de array.

O exemplo a seguir usa o método Filters.size() para fazer a correspondência de documentos em que o tamanho da lista vendor é 3 na collection paint_purchases :

Bson filter = Filters.size("vendor", 3);
collection.find(filter).forEach(doc -> System.out.println(doc.toJson()));

O seguinte mostra a saída da query anterior:

{ "_id": 2, "color": "purple", "qty": 8, "vendor": ["B", "D", "F"], "rating": 5 }
{ "_id": 8, "color": "black", "qty": 7, "vendor": ["A", "C", "D"] }

Os operadores de elemento consultam os dados com base na presença ou tipo de campo.

O exemplo a seguir usa o método Filters.exists() para fazer a correspondência de documentos que têm um rating na collection paint_purchases :

Bson filter = Filters.exists("rating");
collection.find(filter).forEach(doc -> System.out.println(doc.toJson()));

O seguinte mostra a saída da query anterior:

{ "_id": 2, "color": "purple", "qty": 8, "vendor": ["B", "D", "F"], "rating": 5 }
{ "_id": 4, "color": "white", "qty": 6, "vendor": ["D"], "rating": 9 }
{ "_id": 7, "color": "green", "qty": 8, "vendor": ["C", "E"], "rating": 7 }

Os operadores de avaliação fazem query de dados em lógica de nível superior, como pesquisar de regex e texto.

O exemplo a seguir usa o método Filters.regex() para combinar documento que têm um color terminando com a letra "k" na collection paint_purchases :

Bson filter = Filters.regex("color", "k$");
collection.find(filter).forEach(doc -> System.out.println(doc.toJson()));

O seguinte mostra a saída da query anterior:

{ "_id": 6, "color": "pink", "qty": 3, "vendor": ["C"] }
{ "_id": 8, "color": "black", "qty": 7, "vendor": ["A", "C", "D"] }

Para obter mais informações sobre os operadores mencionados nesta aba, consulte as seguintes entradas manuais do servidor:

Voltar

Operações em massa