Menu Docs

Coleções de Time Series

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

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'.

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'

<?php
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.

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.

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ímetros

  • location, que armazena metadados de localização

  • timestamp, 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.

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 .

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.