db.aggregate()
Definição
Novidade na versão 3.6.
db.aggregate()
Executa um pipeline de administração/diagnóstico especificado que não requer uma collection subjacente. Para agregações de dados de collection, consulte
db.collection.aggregate()
.O método
db.aggregate()
tem a seguinte sintaxe:db.aggregate( [ <pipeline> ], { <options> } ) O parâmetro
pipeline
é uma array de estágios a serem executados. Ele deve começar com um estágio compatível que não exija uma collection subjacente, como$currentOp
ou$listLocalSessions
.O documento
options
pode conter os seguintes campos e valores:CampoTipoDescriçãoexplain
booleanoOpcional. Especifica para devolver as informações sobre o processamento do pipeline. Consulte Informações de retorno sobre a operação do pipeline de agregação para obter um exemplo.
Não disponível em transações com vários documentos.
allowDiskUse
booleanoOpcional. Permite escrever em arquivos temporários. Ao definir como
true
, as operações de agregação podem gravar dados no subdiretório_tmp
no diretóriodbPath
. Consulte Executar operação de classificação grande com classificação externa para obter um exemplo.As mensagens de registro do criador de perfil e as mensagens de registro de diagnóstico incluem um indicador
usedDisk
se algum estágio de agregação gravou dados em arquivos temporários devido a restrições de memória.cursor
documentoOpcional. Especifica o tamanho do lote inicial para o cursor. O valor do campocursor
é um documento com o campobatchSize
. Consulte Especificar um tamanho de lote inicial para obter sintaxe e exemplo.maxTimeMS
non-negative integerOpcional. Especifica um limite de tempo em milésimos de segundo para operações de processamento em um cursor. Se você não especificar um valor para maxTimems, as operações não atingirão o tempo limite. Um valor de
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.bypassDocumentValidation
booleanoOpcional. Aplicável somente se você especificar as etapas de aggregation do
$out
ou$merge
.Habilita o
db.collection.aggregate()
para ignorar a validação do documento durante a operação. Isso permite inserir documentos que não atendam aos requisitos de validação.Novo na versão 3.2.
readConcern
documentoOpcional. 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:
"local"
. Esse é o read concern padrão para operações de leitura em relação ao primário e secundários."available"
. Disponível para operações de leitura em relação às primárias e secundárias."available"
se comporta da mesma forma que"local"
em relação aos secundários primários e não fragmentados. A query retorna os dados mais recentes da instância."majority"
. Disponível para conjuntos de réplica que usam o mecanismo de armazenamento WiredTiger."linearizable"
. Disponível apenas para operações de leitura noprimary
.
Para obter mais informações sobre os read concern, consulte Níveis de read concern.
O estágio
$out
não pode ser usado em conjunto com preocupação de leitura"linearizable"
. Se você especificar a preocupação de leitura"linearizable"
paradb.collection.aggregate()
, não poderá incluir o estágio$out
no pipeline.O estágio
$merge
não pode ser usado em conjunto com a read concern"linearizable"
. Ou seja, se você especificar"linearizable"
read concern paradb.collection.aggregate()
, não poderá incluir o estágio$merge
no pipeline.collation
documentoOpcional.
Especifica o agrupamento a ser usado 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.
Novidade na versão 3.4.
hint
string ou documentoOpcional. O índice a ser usado para a aggregation. O índice está na collection/visualização inicial em relação à qual a aggregation é executada.
Especifique o índice pelo nome do índice ou pelo documento de especificação do índice.
Observação
O
hint
não se aplica aos estágios$lookup
e$graphLookup
.Novidade na versão 3.6.
comment
stringOpcional. Os usuários podem especificar uma cadeia de caracteres arbitrária para ajudar a rastrear a operação por meio do analisador de banco de dados, currentOp e logs.
Novidade na versão 3.6.
writeConcern
documentoOpcional. Um documento que expressa a write concern a ser usado com o estágio
$out
ou$merge
.$out
Omitir para usar a write concern padrão com o estágio$out
ou$merge
.
Exemplo
Pipeline com $currentOp
O exemplo a seguir executa um pipeline com dois estágios. O primeiro estágio executa a operação $currentOp
e o segundo estágio filtra os resultados dessa operação.
use admin db.aggregate( [ { $currentOp : { allUsers: true, idleConnections: true } }, { $match : { shard: "shard01" } } ] )