Definição
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.
Comportamento
$tsSecond Devoluções:
- Nullse a expressão de entrada avaliar para- nullou 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. 
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") } 
Use $tsSecond em um cursor de fluxo de alterações para monitorar alterações de coleção
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:
- O método - db.collection.watch()cria um cursor de fluxo de alterações para a coleção- cakeSalese armazena o cursor em- cakeSalesCursor.
- O estágio - $addFieldsadiciona um campo chamado- clusterTimeSecondsa- cakeSalesCursor.- $clusterTimeé o oplog de data/hora da oplog para a alteração da collection- cakeSales. Consulte Resposta do comando.
- $tsSecondretornará os segundos de- $clusterTime, que são armazenados em- clusterTimeSeconds.
 
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