Limitações de coleta de séries temporais
Nesta página
- Recursos Não Suportados
- Restrições
- Aggregation $out e $merge
- Comando distinto
- Tamanho do documento
- Atualizações e exclusões
- Índices secundários
- Capped collections
- Modificação do Tipo de Coleção
- Modificação de
timeField
emetaField
- Modificação de
granularity
- Fragmentação
- Comandos de Administração de Fragmentação
- Transações
- Isolamento de snapshot
Recursos Não Suportados
Os seguintes recursos não são suportados para coleções de séries temporais .
Atlas Device Sync (o Atlas Device Sync será compatível se as coleções de séries temporais forem sincronizadas de forma assimétrica. Para detalhes, consulte Habilitar Atlas Device Sync.)
Restrições
O tamanho máximo de um documento de medição é 4 MB.
Aggregation $out e $merge
Você não pode usar os estágios de pipeline de agregação $out
e $merge
para gerar ou mesclar coleções de séries temporais de outra coleção.
Comando distinto
Devido à estrutura de dados única das coleções de séries temporais, o MongoDB não pode indexá-las de forma eficiente para valores diferentes. Evite usar o comando distinct
ou método assistente db.collection.distinct()
em coleções de séries temporais. Em vez disso, use uma agregação $group
para agrupar documentos por valores distintos.
Por exemplo, para consultar valores meta.type
diferentes em documentos onde meta.project = 10
, em vez de:
db.foo.distinct("meta.type", {"meta.project": 10})
Usar:
db.foo.createIndex({"meta.project":1, "meta.type":1}) db.foo.aggregate([{$match: {"meta.project": 10}}, {$group: {_id: "$meta.type"}}])
Isso funciona da seguinte maneira:
Criando um índice composto em
meta.project
emeta.type
e é compatível com a agregação.O estágio
$match
filtra documentos ondemeta.project = 10
.O estágio
$group
usameta.type
como a chave de grupo para gerar um documento por valor exclusivo.
Tamanho do documento
O tamanho máximo dos documentos em uma coleção de séries temporais é 4 MB.
Atualizações e exclusões
A partir do MongoDB 5.0.5, você pode executar algumas operações de exclusão e atualização.
Os comandos de exclusão devem atender aos seguintes requisitos:
A query só pode corresponder aos valores do campo
metaField
.O comando de exclusão não pode limitar o número de documentos a serem excluídos. Você deve usar um comando deletar com
justOne: false
ou o métododeleteMany()
.
Os comandos de atualização devem atender aos seguintes requisitos:
A query só pode corresponder aos valores do campo
metaField
.O comando de atualização só pode modificar o valor do campo
metaField
.A atualização deve ser executada com um documento de atualização que contenha somente expressões do operador de atualização.
O comando de atualização não pode limitar o número de documentos a serem atualizados. Você deve usar um comando de atualização com
multi: true
ou o métodoupdateMany()
.O comando de atualização não pode definir upsert: true.
Para excluir dados antigos automaticamente, configure a remoção automática (TTL).
Para remover todos os documentos de uma collection, use o método drop()
para soltar a collection.
Se uma coleção de séries temporais contiver documentos com timeField
registros de data e hora anteriores a 1970-01-01T00:00:00.000Z
ou posteriores a 2038-01-19T03:14:07.000Z
, nenhum documento será excluído da coleção pelo recurso TTL "time to live".
Para obter detalhes sobre exclusões de TTL, consulte Expirar dados de collections configurando TTL.
Índices secundários
Você pode adicionar índices secundários nos campos especificados como timeField
e metaField
. Se o valor do campo metaField
for um documento, você também poderá criar índices secundários em campos dentro desse documento.
O metaField
não é compatível com os seguintes tipos de índice:
Os índices secundários não são compatíveis com as seguintes propriedades de índice:
Capped collections
Uma coleção de séries temporais não pode ser criada como uma capped collection.
Modificação do Tipo de Coleção
O tipo de uma collection só pode ser definido ao criar a collection:
Uma coleção existente não pode ser convertida em uma coleção de séries temporais.
Uma coleção de séries temporais não pode ser convertida em um tipo de coleção diferente.
Para mover dados de uma coleção existente para uma coleção de séries temporais, migre os dados para uma coleção de séries temporais.
Modificação do timeField
e do metaField
Você só pode definir os parâmetros timeField
e metaField
de uma coleção ao criá-la. Após a criação, esses parâmetros não podem ser modificados.
Modificação de granularity
Depois que o granularity
é definido, ele só pode ser aumentado em um nível por vez. De "seconds"
a "minutes"
ou de "minutes"
a "hours"
. Outras alterações não são permitidas. Se você precisar alterar o granularity
de "seconds"
para "hours"
, primeiro aumente o granularity
para "minutes"
e depois para "hours"
.
Fragmentação
A partir do MongoDB 5.0.6, coleções de séries temporais fragmentadas são suportadas. Ao usar coleções de séries temporais fragmentadas, não é possível modificar o granularity
de uma coleção de séries temporais fragmentadas.
Em versões anteriores ao MongoDB 5.0.6, você não pode mostrar coleções de séries temporais.
Comandos de Administração de Fragmentação
Não é possível executar comandos de administração de fragmentação em coleções de séries temporais fragmentadas.
Transações
Você não pode gravar em coleções de séries temporais em transações.
Observação
As leituras de coleções de séries temporais são suportadas em transações.
Isolamento de snapshot
As operações de leitura em coleções de séries temporais com preocupação de leitura "snapshot"
garantem o isolamento do snapshot somente na ausência de operações simultâneas de remoção ou renomeação de coleções na operação de leitura. A recriação de uma coleção de séries temporais no mesmo namespace com configuração de granularidade diferente não produz isolamento total do snapshot.