For AI agents: a documentation index is available at https://www.mongodb.com/ko-kr/docs/llms.txt — markdown versions of all pages are available by appending .md to any URL path.

$tsSecond (expression operator)

$tsSecond

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.

$tsSecond returns:

  • Null if the input expression evaluates to null or refers to a field that is missing.

  • An error if the input expression does not evaluate to a timestamp.

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")}

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:

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
Rate this page