Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

$tsSecond (agregação)

Nesta página

  • Definição
  • Comportamento
  • Exemplos
$tsSecond

Novidades na versão 5.1.

Retorna os segundos de um carimbo dedata/hora como long.

$tsSecond sintaxe:

{ $tsSecond: <expression> }

A expressão deve ser resolvida para um registro de data e hora.

Dica

Veja também:

$tsSecond Devoluções:

Crie uma collection stockSales que contenha vendas do mercado financeiro de ações da empresa:

db.stockSales.insertMany( [
{ _id: 0, symbol: "MDB", saleTimestamp: Timestamp(1622731060, 1) },
{ _id: 1, symbol: "MDB", saleTimestamp: Timestamp(1622731060, 2) },
{ _id: 2, symbol: "MSFT", saleTimestamp: Timestamp(1714124193, 1) },
{ _id: 3, symbol: "MSFT", saleTimestamp: Timestamp(1714124193, 2) },
{ _id: 4, symbol: "MSFT", saleTimestamp: Timestamp(1714124193, 3) }
] )

No construtor de registro de data e hora , o:

  • O primeiro valor é o número de segundos após a Unix epoch.

  • O segundo valor é o ordinal incrementado. Quando vários eventos acontecem no mesmo segundo, o ordinal incrementado identifica exclusivamente cada evento.

O exemplo a seguir usa $tsSecond em um estágio de pipeline $project para retornar os segundos do campo de vendas de estoque saleTimestamp:

db.stockSales.aggregate( [
{
$project:
{
_id: 0, saleTimestamp: 1, saleSeconds: { $tsSecond: "$saleTimestamp" }
}
}
] )

Saída de exemplo:

{
saleTimestamp: Timestamp({ t: 1622731060, i: 1 }),
saleSeconds: Long("1622731060")
},
{
saleTimestamp: Timestamp({ t: 1622731060, i: 2 }),
saleSeconds: Long("1622731060")
},
{
saleTimestamp: Timestamp({ t: 1714124193, i: 1 }),
saleSeconds: Long("1714124193")
},
{
saleTimestamp: Timestamp({ t: 1714124193, i: 2 }),
saleSeconds: Long("1714124193")
},
{
saleTimestamp: Timestamp({ t: 1714124193, i: 3 }),
saleSeconds: Long("1714124193")
}

O exemplo nesta seção usa $tsSecond em um cursor de change stream para monitorar as alterações em uma coleção.

Crie um cursor de fluxo de alterações em uma coleção chamada cakeSales que você verá mais adiante nesta seção:

cakeSalesCursor = db.cakeSales.watch( [
{
$addFields: {
clusterTimeSeconds: { $tsSecond: "$clusterTime" }
}
}
] )

No exemplo, o:

Crie uma collection cakeSales que contenha vendas de bolo nos estados da Califórnia (CA) e de Washington (WA):

db.cakeSales.insertMany( [
{ _id: 0, type: "chocolate", orderDate: new Date("2020-05-18T14:10:30Z"),
state: "CA", price: 13, quantity: 120 },
{ _id: 1, type: "chocolate", orderDate: new Date("2021-03-20T11:30:05Z"),
state: "WA", price: 14, quantity: 140 },
{ _id: 2, type: "vanilla", orderDate: new Date("2021-01-11T06:31:15Z"),
state: "CA", price: 12, quantity: 145 },
{ _id: 3, type: "vanilla", orderDate: new Date("2020-02-08T13:13:23Z"),
state: "WA", price: 13, quantity: 104 },
{ _id: 4, type: "strawberry", orderDate: new Date("2019-05-18T16:09:01Z"),
state: "CA", price: 41, quantity: 162 },
{ _id: 5, type: "strawberry", orderDate: new Date("2019-01-08T06:12:03Z"),
state: "WA", price: 43, quantity: 134 }
] )

Para monitorar as alterações da coleção cakeSales, utilize cakeSalesCursor. Por exemplo, para obter o próximo documento de cakeSalesCursor, utilize o método next() :

cakeSalesCursor.next()

A saída de exemplo a seguir mostra os detalhes insert do primeiro documento adicionado à coleção cakeSales . O campo clusterTimeSeconds contém os segundos do campo clusterTime.

_id: {
_data: '82613A4A51000000032B022C0100296E5A100495189B4131584C56AC8BA9D540799F23461E5F696400290004'
},
operationType: 'insert',
clusterTime: Timestamp({ t: 1631210065, i: 3 }),
fullDocument: {
_id: 0,
type: 'chocolate',
orderDate: ISODate("2020-05-18T14:10:30.000Z"),
state: 'CA',
price: 13,
quantity: 120
},
ns: { db: 'test', coll: 'cakeSales' },
documentKey: { _id: 0 },
clusterTimeSeconds: 1631210065

Voltar

$tsIncrement