Coleções de Time Series
Nesta página
Visão geral
Neste guia, você aprenderá a usar a integração com o Laravel para criar e interagir com coleções de séries temporais. Essas collections armazenam dados de série temporal, que são compostos pelos seguintes componentes:
Quantidade medida
Carimbo de data/hora para a medição
Metadados que descrevem a medição
A tabela a seguir descreve situações de exemplo para as quais você pode armazenar dados de série temporal:
Situação | Quantidade medida | Metadata |
---|---|---|
Registro de vendas mensais por setor | receita em dólares | Empresa, país |
Rastreando mudanças no tempo | Nível de precipitação | Localização, tipo de sensor |
Registro de flutuações nos preços da casa própria | Preço do aluguel mensal | Localização, moeda |
Crie uma coleção de séries temporais
Importante
Versão do servidor para coleção de séries temporais
Para criar e interagir com coleções de séries temporais, você deve estar conectado a uma implantação executando o MongoDB Server 5.0 ou posterior.
Você pode criar uma coleção de séries temporais para armazenar dados de séries temporais. Para criar uma coleção de séries temporais, crie uma classe de migração e adicione uma função up()
para especificar a configuração da coleção. Na função up()
, passe o nome da nova collection e a opção timeseries
para o método Schema::create()
.
Dica
Para saber mais sobre como criar uma classe de migração, consulte Executar migrações do Laravel no guia Construtor de esquemas.
Ao configurar a opção timeseries
, inclua os seguintes campos:
timeField
: especifica o campo que armazena um carimbo de data/hora em cada documento de série temporal.metaField
: especifica o campo que armazena metadados em cada documento de série temporal .granularity
: especifica o tempo aproximado entre carimbos de data/hora consecutivos. Os valores possíveis são'seconds'
,'minutes'
e'hours'
.
Exemplo
Esta classe de migração de exemplo cria a coleção de séries temporais precipitation
com a seguinte configuração:
timeField
está definido para'timestamp'
metaField
está definido para'location'
granularity
está definido para'minutes'
declare(strict_types=1); use Illuminate\Database\Migrations\Migration; use Illuminate\Support\Facades\Schema; return new class extends Migration { protected $connection = 'mongodb'; /** * Run the migrations. */ public function up(): void { $options = [ 'timeseries' => [ 'timeField' => 'timestamp', 'metaField' => 'location', 'granularity' => 'minutes', ], ]; Schema::create('precipitation', null, $options); } /** * Reverse the migrations. */ public function down(): void { Schema::drop('precipitation'); } };
Para verificar se você criou com sucesso a coleção de séries temporais, chame o método Schema::hasCollection()
e passe o nome da coleção como parâmetro:
$result = Schema::hasCollection('precipitation'); echo $result;
Se a coleção existir, o método hasCollection()
retornará um valor de true
.
Inserir dados de série temporal
Você pode inserir dados em uma coleção de séries temporais passando seus documentos para o método insert()
e especificando a medida, o carimbo de data/hora e os metadados em cada documento inserido.
Dica
Para saber mais sobre como inserir documentos em uma coleção, consulte Inserir Documentos no guia Operações de Escrita.
Exemplo
Este exemplo insere dados de precipitação da cidade de Nova York na coleção de séries temporais precipitation
criada no exemplo exemplo uma coleção de séries temporais. Cada documento contém os seguintes campos:
precipitation_mm
, que armazena medições de precipitação em milímetroslocation
, que armazena metadados de localizaçãotimestamp
, que armazena o tempo da coleta de medição
$data = [ [ 'precipitation_mm' => 0.5, 'location' => 'New York City', 'timestamp' => new UTCDateTime(Carbon::create(2023, 9, 12, 0, 0, 0, 'CET')), ], [ 'precipitation_mm' => 2.8, 'location' => 'New York City', 'timestamp' => new UTCDateTime(Carbon::create(2023, 9, 17, 0, 0, 0, 'CET')), ], ]; $result = DB::table('precipitation') ->insert($data);
Observação
O exemplo anterior utiliza o construtor de query Laravel para inserir documentos na coleção de séries temporais. Como alternativa, você pode criar um modelo Eloquent que represente a coleção e execute operações de inserção em seu modelo. Para saber mais, consulte o guia Classe do modelo Eloquent.
Coleções de séries temporais de query
Você pode usar a mesma sintaxe e convenções para consultar os dados armazenados em uma coleção de séries temporais que você usa ao executar operações de leitura ou agregação em outras collections. Para encontrar mais informações sobre essas operações, consulte a seção Informações adicionais .
Informações adicionais
Para saber mais sobre os conceitos mencionados neste guia, consulte as seguintes entradas de manual do MongoDB Server :
Para saber mais sobre como consultar dados, consulte o guia Construtor de queries.
Para saber mais sobre como executar operações de agregação , consulte o guia Construtor de agregações.