Definição
Novidades na versão 5.1.
Retorna os segundos de um carimbo de data/hora como long.
$tsSecond sintaxe:
{ $tsSecond: <expression> }
A expressão deve ser resolvida para um registro de data e hora.
Comportamento
$tsSecond Devoluções:
Nullse a expressão de entrada avaliar paranullou se referir a um campo ausente.Um erro se a expressão de entrada não for avaliada como um carimbo de data/hora.
Exemplos
Obter o número de segundos de um campo de carimbo de data/hora
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.
The following example uses $tsSecond in a $project pipeline stage to return the seconds from the stock sales saleTimestamp field:
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") }
Use $tsSecond em um cursor de fluxo de alterações para monitorar alterações de coleção
The example in this section uses $tsSecond in a change stream cursor to monitor changes to a collection.
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:
O método
db.collection.watch()cria um cursor de fluxo de alterações para a coleçãocakeSalese armazena o cursor emcakeSalesCursor.O estágio
$addFieldsadiciona um campo chamadoclusterTimeSecondsacakeSalesCursor.$clusterTimeé o oplog de data/hora da oplog para a alteração da collectioncakeSales. Consulte Resposta do comando.$tsSecondreturns the seconds from$clusterTime, which is stored inclusterTimeSeconds.
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