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.
Menu Docs

db.collection.findOne() (método mongosh)

MongoDB com drivers

Esta página documenta um método mongosh. Para ver o método equivalente em um driver MongoDB , consulte a página correspondente para sua linguagem de programação:
db.collection.findOne(query, projection, options)

Retorna um documento que satisfaça os critérios de queryespecificados na coleção ou visualização.

O documento devolvido pode variar dependendo do número de documentos que correspondem aos critérios de consulta e do plano de consulta usado:

Número de documentos correspondentes
Plano de query
Resultado

0

Any

O método retorna null

1

Any

O método retorna o documento que satisfaz os critérios de consulta especificados.

2 ou mais

Varredura de collection

O método retorna o primeiro documento de acordo com a ordem natural. Em coleções limitadas, a ordem natural é a mesma que a ordem de inserção.

2 ou mais

Varredura de índice

O método retorna o primeiro documento recuperado do índice.

Importante

Se o plano de consulta for alterado para usar um índice diferente, o método poderá retornar um documento diferente. Se o seu caso de uso exigir que um registro específico seja escolhido consistentemente, você deverá usar o documento options para especificar uma classificação. Para obter detalhes sobre como usar findOne() com um documento options , consulte o exemplo.

Se você especificar um parâmetro projection, findOne() retornará um documento que contém apenas os campos projection. O campo _id está sempre incluído, a menos que seja explicitamente removido.

Observação

Embora semelhante ao método find(), findOne() retorna um documento em vez de um cursor.

Esse método está disponível em implantações hospedadas nos seguintes ambientes:

  • MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem

Observação

Este comando é aceito em todos os clusters do MongoDB Atlas. Para obter informações sobre o suporte do Atlas a todos os comandos, consulte Comandos não suportados.

  • MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB

  • MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB

db.collection.findOne() tem o seguinte formato:

db.collection.findOne( <query>, <projection>, <options> )

db.collection.findOne() recebe os seguintes parâmetros:

Parâmetro
Tipo
Descrição

query

documento

Opcional. Especifica os critérios de seleção de query usando operador de query.

projection

documento

Opcional. Especifica os campos para retornar utilizando operadores de projeção. Omitir este parâmetro para retornar todos os campos no documento correspondente. Para obter detalhes, consulte Projeção.

options

documento

Opcional. Especifica opções adicionais para a query. Estas opções modificam o comportamento da query e como os resultados são retornados. Para ver as opções disponíveis, consulte FindOptions.

Se o cliente que emitiu findOne() se desconectar antes da conclusão da operação, o MongoDB marcará findOne() para encerramento usando killOp.

Importante

Consistência de linguagem

Como parte da criação da projeção find() e findAndModify() consistente com o estágio $project da aggregation:

O parâmetro projection determina quais campos serão retornados nos documentos correspondentes. O parâmetro projection obtém um documento do seguinte formulário:

{ field1: <value>, field2: <value> ... }
Projeção
Descrição

<field>: <1 or true>

Especifica a inclusão de um campo. Se você especificar um número inteiro diferente de zero para o valor de projeção, a operação tratará o valor como true.

<field>: <0 or false>

Especifica a exclusão de um campo.

"<field>.$": <1 or true>

Usa o operador de projeção de array $ para retornar o primeiro elemento que corresponde à condição de consulta no campo de array. Se você especificar um número inteiro diferente de zero para o valor de projeção, a operação tratará o valor como true.

Não disponível para visualizações.

<field>: <array projection>

Usa os operadores de projeção de array ($elemMatch, $slice) para especificar os elementos da array a serem incluídos.

Não disponível para visualizações.

<field>: <$meta expression>

Usa a expressão do operador $meta para especificar a inclusão de per-document metadatadisponíveis .

Não disponível para visualizações.

<field>: <aggregation expression>

Especifica o valor do campo projetado.

Com o uso de expressões de agregação e sintaxe, incluindo o uso de literais e variáveis de agregação, você pode projetar novos campos ou projetar campos existentes com novos valores.

  • Se você especificar um literal não numérico e não booleano (como uma string literal ou uma array ou uma expressão de operador) para o valor de projeção, o campo será projetado com o novo valor, por exemplo:

    • { field: [ 1, 2, 3, "$someExistingField" ] }

    • { field: "New String Value" }

    • { field: { status: "Active", total: { $sum: "$existingArray" } } }

  • Para projetar um valor literal para um campo, utilize a expressão de agregação $literal; por exemplo:

    • { field: { $literal: 5 } }

    • { field: { $literal: true } }

    • { field: { $literal: { fieldWithValue0: 0, fieldWithValue1: 1 } } }

Observação

Você pode especificar a projeção de duas maneiras para find() e findOne():

  • Configurando o parâmetro projection

  • Configurando o parâmetro options para projection

Se você especificar ambos os parâmetros, o parâmetro projection terá precedência. Para utilizar options.projection, configure o parâmetro projection para null ou undefined.

Para campos em documentos incorporados, você pode especificar o campo usando:

  • notação de pontos, por exemplo "field.nestedfield": <value>

  • formato aninhado, por exemplo { field: { nestedfield: <value> } }

O campo _id é incluído nos documentos retornados por padrão, a menos que você especifique explicitamente _id: 0 na projeção para suprimir o campo.

Uma projection não pode conter especificações de inclusão e exclusão, com exceção do campo _id:

  • Em projeções que incluem explicitamente campos, o campo _id é o único campo que você pode excluir explicitamente.

  • Em projeções que excluem explicitamente campos, o campo _id é o único campo que você pode incluir explicitamente; entretanto, o campo _id é incluído por padrão.

Os exemplos nesta página usam dados do conjunto de dados de amostra sample_mflix. Para obter detalhes sobre como carregar esse conjunto de dados em sua implantação autogerenciada do MongoDB , consulte Carregar o conjunto de dados de amostra. Se você fez modificações nos bancos de dados de amostra, talvez seja necessário descartar e recriar os bancos de dados para executar os exemplos nesta página.

A operação a seguir retorna um único documento da coleção movies no banco de dados sample_mflix :

db.movies.findOne()

A operação a seguir retorna o primeiro documento correspondente da coleção movies em que o campo title começa com a letra "T" ou o campo year é menor que 1950:

db.movies.findOne(
{
$or: [
{ title: /^T/ },
{ year: { $lt: 1950 } }
]
}
)

O parâmetro projection especifica quais campos retornar. O parâmetro contém especificações de inclusão ou exclusão, e não ambas, a menos que a exclusão seja para o campo _id.

A operação a seguir localiza um documento na coleção movies e retorna somente os campos title, genres e imdb:

db.movies.findOne(
{ },
{ title: 1, genres: 1, imdb: 1 }
)

A operação a seguir retorna um documento na coleção movies onde a array cast contém "Al Pacino". A projeção retorna todos os campos,exceto o _id campo, o votes campo no imdb documento incorporado e o fullplot campo:

db.movies.findOne(
{ cast: 'Al Pacino' },
{ _id: 0, 'imdb.votes': 0, fullplot: 0 }
)

A operação a seguir usa a opção sort para retornar o primeiro documento correspondente da coleção movies classificada. Neste exemplo, a coleção é classificada por year em ordem crescente.

db.movies.findOne(
{ },
{ },
{ sort: { year: 1 } }
)

Não é possível aplicar métodos de cursor ao resultado de findOne(), pois ele retorna apenas um documento. Você tem acesso direto ao documento:

var myDocument = db.movies.findOne();
if (myDocument) {
var myTitle = myDocument.title;
print(myTitle);
}

Você pode especificar opções de consulta para modificar o comportamento da consulta e indicar como os resultados são retornados.

Por exemplo, para definir variáveis que você pode acessar em outro lugar no método findOne, utilize a opção let. Para filtrar os resultados utilizando uma variável, você deve acessar a variável dentro do operador $expr.

O exemplo a seguir define uma variável targetTitle em let e usa a variável para recuperar o filme intitulado "The Godfather":

db.movies.findOne(
{ $expr: { $eq: [ "$title", "$$targetTitle" ] } },
{ _id: 0, title: 1, year: 1 },
{ let : { targetTitle: "The Godfather" } }
)
{ year: 1972, title: 'The Godfather' }