Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.

Encontrar documentos

Neste guia, você pode aprender como usar a MongoDB Extension para Hibernate ORM para executar uma query de banco de dados para recuperar documento de uma coleção do MongoDB.

Para fazer uma query nos seus dados do MongoDB, chame o método createQuery() em uma sessão ou em um gerente de entidade. Em seguida, especifique sua query em uma declaração Hibernate linguagem de query (HQL) ou Jakarta Persistence linguagem de query (JPQL).

Para recuperar todos os documentos de uma coleção, passe uma declaração select para o método createQuery(). Nesta declaração, especifique a entidade que representa a coleção que você deseja query.

O exemplo a seguir recupera os valores title de todos os documentos da coleção sample_mflix.movies consultando a entidade Movie:

var allDocs = session.createQuery("select title from Movie", String.class) .getResultList();for (var t : allDocs) { System.out.println("Title: " + t);}

Para recuperar documentos que correspondam a critérios específicos, passe uma declaração de seleção com uma cláusula where para o método createQuery(). Nesta declaração, especifique a entidade que representa a coleção que você deseja query e os critérios correspondentes.

O exemplo a seguir recupera documentos que têm um valor title de "Romeo and Juliet" da coleção sample_mflix.movies:

var matchingDocs = session.createQuery("from Movie where title = :t", Movie.class) .setParameter("t", "Romeo and Juliet") .getResultList();for (var m : matchingDocs) { System.out.println("Title: " + m.getTitle() + ", Year: " + m.getYear());}

Para recuperar um único documento que corresponda a critérios específicos, encadeie o método getSingleResult() com o método createQuery().

O exemplo a seguir recupera um único documento com um valor title de "Best in Show" da coleção sample_mflix.movies:

var singleResult = session.createQuery("from Movie where title = :t", Movie.class) .setParameter("t", "Best in Show") .getSingleResult();System.out.println("Title: " + singleResult.getTitle() + ", Year: " + singleResult.getYear());

Importante

Erros de NonUniqueResultException

Se a sua query corresponder a vários documentos, o método getSingleResult() gerará um erro NonUniqueResultException. Para evitar esse erro, certifique-se de que sua query corresponda a apenas um documento ou limite os resultados da query a um documento.

Em vez de usar declarações HQL ou JPQL para criar filtro de queries, é possível usar a API de critérios de persistência de Jakarta para criar queries de tipo seguro programaticamente.

Para criar uma query usando a Criteria API, siga estas etapas:

  1. Crie um objeto CriteriaBuilder a partir de uma sessão ou de um gerenciador de entidade.

  2. Crie um objeto CriteriaQuery do construtor e especifique a entidade para query.

  3. Utilize métodos de query fornecidos pela classe CriteriaQuery para especificar seus critérios de query.

Dica

Para saber mais sobre a API de critérios, consulte Utilizando a API de critérios para criar queries na documentação do Jakarta EE.

O exemplo a seguir usa a API de critérios para recuperar todos os documentos que têm um year valor de 1925 da sample_mflix.movies coleção:

CriteriaBuilder cb = session.getCriteriaBuilder();CriteriaQuery<Movie> cq = cb.createQuery(Movie.class);Root<Movie> movieRoot = cq.from(Movie.class); cq.select(movieRoot).where(cb.equal(movieRoot.get("year"), 1925));session.createQuery(cq).getResultList() .forEach(m -> System.out.println(m.getTitle()));

Para executar queries do MongoDB que não são atualmente suportadas pela extensão Hibernate ORM, você pode passar sua query como uma declaração MongoDB linguagem de query (MQL) para o método createNativeQuery().

Para aprender como executar queries nativas, consulte o guia Executar Queries Nativas.

Para saber mais sobre como executar outras operações em seus dados do MongoDB, consulte o guia Operações CRUD.

Para saber mais sobre como usar HQL e JPQL para executar queries, consulte Um guia para a linguagem de query do Hibernate na documentação do Hibernate ORM.