Definition
New in version 5.1.
Returns the seconds from a timestamp as a long.
$tsSecond syntax:
{ $tsSecond: <expression> } 
The expression must resolve to a timestamp.
Behavior
$tsSecond returns:
- Nullif the input expression evaluates to- nullor refers to a field that is missing.
- An error if the input expression does not evaluate to a timestamp. 
Examples
Obtain the Number of Seconds from a Timestamp Field
Create a stockSales collection that contains company stock financial
market sales:
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) } ] ) 
In the timestamp constructor, the:
- First value is the number of seconds after the Unix epoch. 
- Second value is the incrementing ordinal. When multiple events happen within the same second, the incrementing ordinal uniquely identifies each event. 
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" }       }    } ] ) 
Example output:
{   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 in a Change Stream Cursor to Monitor Collection Changes
The example in this section uses $tsSecond in a
change stream cursor to monitor changes to a
collection.
Create a change stream cursor on a collection
named cakeSales that you will see later in this section:
cakeSalesCursor = db.cakeSales.watch( [    {       $addFields: {          clusterTimeSeconds: { $tsSecond: "$clusterTime" }       }    } ] ) 
In the example, the:
- db.collection.watch()method creates a change stream cursor for the- cakeSalescollection and stores the cursor in- cakeSalesCursor.
- $addFieldsstage adds a field named- clusterTimeSecondsto- cakeSalesCursor.- $clusterTimeis the timestamp from the oplog entry for the- cakeSalescollection change. See Command Response.
- $tsSecondreturns the seconds from- $clusterTime, which is stored in- clusterTimeSeconds.
 
Create a cakeSales collection that contains cake sales in the states
of California (CA) and 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 } ] ) 
To monitor the cakeSales collection changes, use
cakeSalesCursor. For example, to obtain the next document from
cakeSalesCursor, use the next() method:
cakeSalesCursor.next() 
The following example output shows the insert details for the first
document added to the cakeSales collection. The
clusterTimeSeconds field contains the seconds from the
clusterTime field.
_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