Menu Docs
Página inicial do Docs
/ / /
Driver de sincronização Java
/ /

Localizar vários documentos

Você pode executar uma query de vários documentos em uma coleção chamando o método find() em um objeto MongoCollection. Passe um filtro de query para o método find() para consultar e retornar documentos que correspondam ao filtro na collection. Se você não incluir um filtro, o MongoDB retornará todos os documentos na collection.

Para obter mais informações sobre como consultar o MongoDB com o driver Java, consulte nosso guia sobre Consulta de documentos.

Você também pode encadear métodos para o método find(), como sort(), que organiza os documentos correspondentes em uma ordem especificada e projection(), que configura os campos incluídos nos documentos retornados.

Para obter mais informações sobre o método sort() , consulte nosso guia de classificação. Para obter mais informações sobre o método projection() , consulte nosso guia de projeção

O método find() retorna uma instância do FindIterable, uma classe que oferece vários métodos para acessar, organizar e percorrer os resultados. O FindIterable também herda métodos de sua classe pai, MongoIterable que implementa o núcleo da interface Java Iterable.

Você pode chamar o método iterator() no MongoIterable para gerar uma instância do MongoCursor que você pode usar para cruzar os resultados. Você pode chamar métodos no MongoCursor, como hasNext(), para conferir se existem resultados adicionais, ou next(), para gerar o próximo documento da collection. Se nenhum documento corresponder à query, a chamada hasNext() gerará false e, portanto, chamar next() lançará uma exceção.

Se você chamar next() no iterador depois dele ter gerado o resultado final ou quando não houver resultados, ele lançará uma exceção do tipo java.util.NoSuchElementException. Sempre use hasNext() para conferir se existem resultados adicionais antes de chamar next().

O trecho a seguir encontra e imprime todos os documentos que correspondem a uma query na collection movies. Ele usa os seguintes objetos e métodos:

  • Um filtro de query que é passado para o método find(). O filtro lt() corresponde apenas a filmes com um tempo de duração inferior a 15 minutos.

  • Uma classificação que organiza os documentos retornados em ordem decrescente por título ("Z" antes de "A").

  • Uma projeção que inclui os objetos nos campos title e imdb, e exclui o campo _id utilizando o método auxiliar excludeId().

Observação

Esse exemplo se conecta a uma instância do MongoDB usando um URI de conexão. Para saber mais sobre como se conectar à sua instância do MongoDB, consulte o Guia de conexão.

// Retrieves documents that match a query filter by using the Java driver
package usage.examples;
import static com.mongodb.client.model.Filters.lt;
import org.bson.Document;
import org.bson.conversions.Bson;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Projections;
import com.mongodb.client.model.Sorts;
public class Find {
public static void main( String[] args ) {
// Replace the uri string with your MongoDB deployment's connection string
String uri = "<connection string uri>";
try (MongoClient mongoClient = MongoClients.create(uri)) {
MongoDatabase database = mongoClient.getDatabase("sample_mflix");
MongoCollection<Document> collection = database.getCollection("movies");
// Creates instructions to project two document fields
Bson projectionFields = Projections.fields(
Projections.include("title", "imdb"),
Projections.excludeId());
// Retrieves documents that match the filter, applying a projection and a descending sort to the results
MongoCursor<Document> cursor = collection.find(lt("runtime", 15))
.projection(projectionFields)
.sort(Sorts.descending("title")).iterator();
// Prints the results of the find operation as JSON
try {
while(cursor.hasNext()) {
System.out.println(cursor.next().toJson());
}
} finally {
cursor.close();
}
}
}
}

Dica

Legacy API

Se você estiver usando a API herdada, consulte nossa página de perguntas frequentes para saber quais alterações devem ser feitas nesse exemplo de código.

Para obter mais informações sobre as classes e métodos mencionados nesta página, consulte a seguinte documentação da API:

  • FindIterable

  • MongoIterable

  • MongoCursor

  • find()

Voltar

Encontrar um documento