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

encontrar (comando de banco de dados)

find

Executa uma query e retorna o primeiro lote de resultados e o ID do cursor, a partir do qual o cliente pode construir um cursor.

Dica

In mongosh, this command can also be run through the db.collection.find() or db.collection.findOne() helper methods.

Helper methods are convenient for mongosh users, but they may not return the same level of information as database commands. In cases where the convenience is not needed or the additional return fields are required, use the database command.

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

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

Importante

Esse comando tem suporte limitado nos clusters M0 e Flex. Para saber mais, 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

The find command has the following syntax:

Alterado na versão 5.0.

db.runCommand(
{
find: <string>,
filter: <document>,
sort: <document>,
projection: <document>,
hint: <document or string>,
skip: <int>,
limit: <int>,
batchSize: <int>,
singleBatch: <bool>,
comment: <any>,
maxTimeMS: <int>,
readConcern: <document>,
max: <document>,
min: <document>,
returnKey: <bool>,
showRecordId: <bool>,
tailable: <bool>,
oplogReplay: <bool>,
noCursorTimeout: <bool>,
awaitData: <bool>,
allowPartialResults: <bool>,
collation: <document>,
allowDiskUse : <bool>,
let: <document> // Added in MongoDB 5.0
}
)

O comando aceita os seguintes campos:

Campo
Tipo
Descrição

find

string

O nome da coleção ou visualizar para fazer query.

filter

documento

Opcional. O predicado de query. Se não for especificado, todos os documentos na coleção corresponderão ao predicado.

documento

Opcional. A especificação de classificação para a ordenação dos resultados.

projection

documento

Opcional. A especificação de projeção para determinar quais campos incluir nos documentos devolvidos.

As operaçõesfind() em visualizações não suportam os seguintes operadores de projeção de comando find:

hint

string ou documento

Opcional. Especificação do índice. Especifique o nome do índice como uma string ou o padrão da chave do índice. Se especificado, o sistema de query considerará apenas os planos usando o índice sugerido.

Com a seguinte exceção, hint será exigido se o comando incluir os campos min e/ou max ; hint não é necessário com min e/ou max se filter for uma condição de igualdade no campo _id { _id: <value> }.

skip

número inteiro positivo

Opcional. Número de documentos a ignorar. O padrão é 0.

limit

Non-negative integer

Opcional. O número máximo de documentos a retornar. Se não for especificado, o padrão será sem limite. Um limite de 0 é equivalente a não definir nenhum limite.

batchSize

non-negative integer

Opcional. O número máximo de documentos que podem ser retornados em cada lote de um resultado de query. Por padrão, o comando find tem batchSize do menor dos documentos 101 ou 16 mebibytes (MiB) de documentos. Os lotes subsequentes têm um tamanho máximo de 16 MiB. Esta opção pode impor um limite menor do que 16 MiB, mas não maior. Quando definido, o batchSize é o menor de batchSize documentos ou 16 MiB de documentos.

Um batchSize de 0 significa que o cursor está estabelecido, mas nenhum documento é devolvido no primeiro lote.

Ao contrário da versão anterior do protocolo de conexão , um tamanho de lote de 1 para o find comando não fecha o cursor.

singleBatch

booleano

Opcional. Determina se o cursor deve ser fechado após o primeiro lote. O padrão é falso.

comment

any

Opcional. Um comentário fornecido pelo usuário para anexar a este comando. Depois de definido, esse comentário aparece junto com os registros desse comando nos seguintes locais:

Um comentário pode ser qualquer tipo BSON válido (string, inteiro, objeto, array etc).

Qualquer comentário definido em um comando find é herdado por todos os comandos getMore subsequentes executados no cursor find.

maxTimeMS

non-negative integer

Opcional.

Especifica um limite de tempo em milissegundos. Se você não especificar um valor para maxTimeMS, as operações não atingirão o tempo limite. Um valor 0 especifica explicitamente o comportamento ilimitado padrão.

O MongoDB encerra as operações que excedem o limite de tempo alocado usando o mesmo mecanismo de db.killOp(). O MongoDB só encerra uma operação em um de seus pontos de interrupção designados.

Ao especificar linearizable read concern, sempre use maxTimeMS caso a maioria dos membros de suporte de dados não esteja disponível. maxTimeMS garante que a operação não bloqueie indefinidamente e, em vez disso, retorne um erro se a preocupação de leitura não puder ser executada.

readConcern

documento

Opcional. Especifica a read concern.

A opção readConcern tem a seguinte sintaxe: readConcern: { level: <value> }

Os possíveis níveis de read concern são:

Para obter mais informações sobre os read concern, consulte Níveis de read concern.

O comando getMore utiliza o nível readConcern especificado no comando find de origem.

max

documento

Opcional. O limite superior exclusivo para um índice específico. Consulte cursor.max() para detalhes.

Para utilizar o campo max, o comando também deve utilizar hint a menos que a filter especificada seja uma condição de igualdade no campo _id { _id: <value> }.

min

documento

Opcional. O limite inferior inclusivo para um índice específico. Consulte cursor.min() para obter detalhes.

Para utilizar o campo min, o comando também deve utilizar hint a menos que a filter especificada seja uma condição de igualdade no campo _id { _id: <value> }.

returnKey

booleano

Optional. If true, returns only the index keys in the resulting documents. Default value is false. If returnKey is true and the find command does not use an index, the returned documents will be empty.

showRecordId

booleano

Opcional. Determina se o identificador de registro de cada documento deve ser retornado. Se verdadeiro, adiciona um campo $recordId aos documentos devolvidos.

tailable

booleano

Opcional. Retorna um cursor tailable para coleções limitadas.

awaitData

booleano

Optional. Use in conjunction with the tailable option to block a getMore command on the cursor temporarily at the end of data rather than returning no data. After a timeout period, find returns as normal.

noCursorTimeout

booleano

Opcional. Impede que o servidor atinja o tempo limite de cursores ociosos que não sejam da sessão após um período de inatividade de 30 minutos. Ignorado para cursores que fazem parte de uma sessão. Para obter mais informações, consulte a página Tempo limite de inatividade da sessão.

booleano

Opcional. Para queries em relação a uma coleção fragmentada, permite que o comando (ou comandos subsequentes do getMore) retorne resultados parciais, ao invés de um erro, se um ou mais fragmentos analisados não estiverem disponíveis.

If find (or subsequent getMore commands) returns partial results because the queried shard(s) aren't available, the find output includes a partialResultsReturned indicator field. If the queried shards are available for the initial find command, but one or more shards become unavailable for subsequent getMore commands, only the getMore commands that run while the shards aren't available include partialResultsReturned in their output.

collation

documento

Opcional.

Opcional. Especifica a agrupamento para utilizar para a operação.

A colocação permite que os usuários especifiquem regras específicas do idioma para comparação de strings, como regras para letras maiúsculas e marcas de acento.

A opção de agrupamento tem a seguinte sintaxe:

collation: {
locale: <string>,
caseLevel: <boolean>,
caseFirst: <string>,
strength: <int>,
numericOrdering: <boolean>,
alternate: <string>,
maxVariable: <string>,
backwards: <boolean>
}

Ao especificar agrupamento, o campo locale é obrigatório; todos os outros campos de agrupamento são opcionais. Para obter descrições dos campos, consulte Documento de agrupamento.

Se o agrupamento não for especificado, mas a coleção tiver um agrupamento padrão (consulte db.createCollection()), a operação usará o agrupamento especificado para a coleção.

Se nenhum agrupamento for especificado para a coleção ou para as operações, o MongoDB usa a comparação binária simples usada nas versões anteriores para comparações de strings.

Você não pode especificar vários agrupamentos para uma operação. Por exemplo, você não pode especificar agrupamentos diferentes por campo ou, se estiver realizando uma busca com uma classificação, não poderá usar um agrupamento para a busca e outro para a classificação.

booleano

Opcional.

Utilize esta opção para substituir o allowDiskUseByDefault para uma query específica. Você pode usar esta opção para:

  • Proibir o uso do disco em um sistema onde o uso do disco é permitido por padrão.

  • Permitir o uso do disco em um sistema onde o uso do disco é proibido por padrão.

A partir do MongoDB 6.0, se allowDiskUseByDefault estiver configurado como true e o servidor exigir mais de 100 megabytes de memória para um estágio de execução do pipeline, o MongoDB gravará automaticamente arquivos temporários em disco, a menos que a consulta especifique { allowDiskUse: false }.

Para detalhes, consulte allowDiskUseByDefault.

allowDiskUse não terá efeito se o MongoDB puder satisfazer a classificação especificada usando um índiceou se a classificação na memória exigir menos de 100 megabytes de memória.

Para obter mais documentação completa sobre allowDiskUse, consulte cursor.allowDiskUse().

Para obter mais informações sobre restrições de memória para grandes ordenações na memória, consulte Uso de Ordenação e Índice.

documento

Opcional.

Especifica um documento com uma lista de variáveis. Isso permite que você melhore a legibilidade do comando separando as variáveis do texto da query.

A sintaxe do documento é:

{
<variable_name_1>: <expression_1>,
...,
<variable_name_n>: <expression_n>
}

A variável é definida para o valor retornado pela expressão e não pode ser alterada posteriormente.

Para acessar o valor de uma variável no comando, use o prefixo de dois cifrões ($$) junto com o nome da variável no formato $$<variable_name>. Por exemplo: $$targetTotal.

Para usar uma variável para filtrar os resultados, você deve acessar a variável dentro do operador $expr.

For a complete example using let and variables, see Use Variables in let.

Novidade na versão 5.0.

O comando retorna um documento que contém as informações do cursor, incluindo o ID do cursor e o primeiro lote de documentos. Por exemplo, o comando retorna o seguinte documento quando executado em uma coleção fragmentada:

{
"cursor" : {
"firstBatch" : [
{
"_id" : ObjectId("5e8e2ca217b5324fa9847435"),
"zipcode" : "20001",
"x" : 1
},
{
"_id" : ObjectId("5e8e2ca517b5324fa9847436"),
"zipcode" : "30001",
"x" : 1
}
],
"partialResultsReturned" : true,
"id" : Long("668860441858272439"),
"ns" : "test.contacts"
},
"ok" : 1,
"operationTime" : Timestamp(1586380205, 1),
"$clusterTime" : {
"clusterTime" : Timestamp(1586380225, 2),
"signature" : {
"hash" : BinData(0,"aI/jWsUVUSkMw8id+A+AVVTQh9Y="),
"keyId" : Long("6813364731999420435")
}
}
}
Campo
Descrição

cursor

Contém as informações do cursor, incluindo o cursor id e o firstBatch dos documentos.

If the operation against a sharded collection returns partial results due to the unavailability of the queried shard(s), the cursor document includes a partialResultsReturned field. To return partial results, rather than error, due to the unavailability of the queried shard(s), the find command must run with allowPartialResults set to true. See allowPartialResults.

If the queried shards are initially available for the find command but one or more shards become unavailable in subsequent getMore commands, only the getMore commands run when a queried shard or shards are unavailable include the partialResultsReturned flag in the output.

"ok"

Indica se o comando foi bem-sucedido (1) ou falhou (0).

In addition to the aforementioned find-specific fields, the db.runCommand() includes the following information for replica sets and sharded clusters:

  • $clusterTime

  • operationTime

Consulte resultados de db.runCommand() para obter detalhes.

Se você não precisar de uma resposta de comando bruto, use os métodos de assistente db.collection.find() ou db.collection.findOne().

A seção seguinte descreve considerações comportamentais do comando find().

O MongoDB geralmente produz a saída de uma operação find() com a seguinte ordem de operações:

  • corresponder

  • sort

  • ignorar

  • limit

  • projeto, projeto

O MongoDB pode executar componentes em uma ordem diferente para otimizar o desempenho da consulta e, ao mesmo tempo, manter a ordem de operações acima.

A partir do MongoDB 5.1, as opções de$regex options inválidas não são mais ignoradas. Essa alteração torna mais consistente com o uso $regex options de $regex nas queries aggregate de comando e projeção.

Para cursores criados dentro de uma sessão, você não pode chamar getMore fora da sessão.

Da mesma forma, para cursores criados fora de uma sessão, você não pode chamar getMore dentro de uma sessão.

MongoDB drivers and mongosh associate all operations with a server session, with the exception of unacknowledged write operations. For operations not explicitly associated with a session (i.e. using Mongo.startSession()), MongoDB drivers and mongosh create an implicit session and associate it with the operation.

Se uma sessão estiver ociosa por mais de 30 minutos, o servidor MongoDB marcará essa sessão como expirada e poderá fechá-la a qualquer momento. Quando o servidor MongoDB fecha a sessão, ele também elimina todas as operações em andamento e abre os cursores associados à sessão. Isso inclui cursores configurados com noCursorTimeout() ou maxTimeMS() com mais de 30 minutos.

Para operações que retornam um cursor, se o cursor puder ficar ocioso por mais de 30 minutos, emita a operação em uma sessão explícita usando Mongo.startSession() e atualize periodicamente a sessão usando o comando refreshSessions. Consulte Tempo limite de inatividade da sessão para obter mais informações.

find can be used inside distributed transactions.

  • Para cursores criados fora de uma transação, você não pode chamar getMore dentro da transação.

  • Para cursores criados em uma transação, não é possível chamar getMore fora da transação.

Importante

Na maioria dos casos, uma transação distribuída incorre em um custo de desempenho maior do que as gravações de um único documento, e a disponibilidade de transações distribuídas não deve substituir o design eficaz do esquema. Em muitos cenários, o modelo de dados desnormalizado (documentos e arrays incorporados) continuará a ser ideal para seus dados e casos de uso. Ou seja, para muitos cenários, modelar seus dados adequadamente minimizará a necessidade de transações distribuídas.

Para considerações adicionais sobre o uso de transações (como limite de tempo de execução e limite de tamanho do oplog), consulte também Considerações de produção.

If the client that issued find disconnects before the operation completes, MongoDB marks find for termination using killOp.

Ao utilizar a API estável 1V, os seguintes campos de comando find do não são suportados:

  • awaitData

  • max

  • min

  • noCursorTimeout

  • oplogReplay

  • returnKey

  • showRecordId

  • tailable

Iniciando no MongoDB 6.0, um filtro de índice utiliza a coleção definida anteriormente utilizando o comando planCacheSetFilter.

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.

O comando a seguir usa find na coleção movies para encontrar filmes com uma classificação no IMDB de 9 ou superior que estão no gênero seriado. O comando inclui um projection para retornar somente os campos title, imdb.rating e year nos documentos correspondentes.

O comando classifica os documentos no resultado definido pelo campo title e limita o resultado definido para documentos 5.

db.runCommand(
{
find: "movies",
filter: { "imdb.rating": { $gte: 9 }, genres: "Drama" },
projection: { title: 1, "imdb.rating": 1, year: 1 },
sort: { title: 1 },
limit: 5
}
)

Para substituir o nível de preocupação de leitura padrão do "local", utilize a opção readConcern.

Este exemplo de código executa as seguintes operações na coleção movies em um conjunto de réplicas:

  • encontra filmes com uma classificação do IMDB abaixo de 5

  • limita os resultados a 5 documentos

  • especifica um preocupação de leitura de "majority" para ler a cópia mais recente dos dados que o MongoDB gravou para a maioria dos nós.

db.runCommand(
{
find: "movies",
filter: { "imdb.rating": { $lt: 5 } },
limit: 5,
readConcern: { level: "majority" }
}
)

Independentemente do nível de read concern, os dados mais recentes em um nó podem não refletir a versão mais recente dos dados no sistema.

The getMore command uses the readConcern level specified in the originating find command.

A readConcern can be specified for the mongosh method db.collection.find() using the cursor.readConcern() method:

db.movies.find( { "imdb.rating": { $lt: 2 } } ).readConcern("majority")

Para obter mais informações sobre as preocupações de leitura disponíveis, consulte Preocupação de leitura.

A colocação permite que os usuários especifiquem regras específicas do idioma para comparação de strings, como regras para letras maiúsculas e marcas de acento.

Este exemplo executa as seguintes operações:

  • encontra filmes com o título Les Misérables e a data de 2012

  • classifica os documentos correspondentes por title

  • executa find com um agrupamento francês (locale: "fr") e correspondência insensível a acentos (strength: 1):

db.runCommand(
{
find: "movies",
filter: { title: "les misérables", year: 2012 },
sort: { title: 1 },
collation: { locale: "fr", strength: 1 }
}
)

mongosh provides the cursor.collation() to specify collation for a db.collection.find() operation.

O exemplo a seguir define uma variável targetTitle e a usa para localizar filmes comparando o campo title com o valor da variável. Este exemplo encontra todos os filmes com o título "O Poderoso Chefão":

db.movies.runCommand( {
find: db.movies.getName(),
filter: { $expr: { $eq: [ "$title", "$$targetTitle" ] } },
let : { targetTitle: "The Godfather" }
} )