定義
バージョン 5.1 で追加。
タイムスタンプからの秒数をlongとして返します。
$tsSecond 構文: 
{ $tsSecond: <expression> } 
動作
$tsSecond 次の値を返します。
- Null入力式が- nullと評価された場合、または欠落しているフィールドを参照している場合。
例
タイムスタンプ フィールドから秒数を取得
会社の株式金融マーケットの売上情報を含むstockSalesコレクションを作成します。
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) } ] ) 
タイムスタンプコンストラクター内で、 は次の操作を行います。
- 最初の値は、UNIX エポックからの経過秒数です。 
- 2 番目の値は、増分序数です。 同じ秒内に複数のイベントが発生した場合、増分序数は各イベントを一意に識別します。 
次の例では、 パイプライン ステージの を使用して、株式販売$tsSecond $projectフィールドから秒数を返します。saleTimestamp
db.stockSales.aggregate( [    {       $project:       {          _id: 0, saleTimestamp: 1, saleSeconds: { $tsSecond: "$saleTimestamp" }       }    } ] ) 
出力例:
{   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") } 
$tsSecond変更ストリーム カーソルで を使用してコレクションの変更を監視
このセクションの例では、$tsSecond 変更ストリーム カーソル で を使用してコレクションの変更を監視します。
このセクションの後半では、 cakeSalesという名前のコレクションに変更ストリーム カーソルを作成します。
cakeSalesCursor = db.cakeSales.watch( [    {       $addFields: {          clusterTimeSeconds: { $tsSecond: "$clusterTime" }       }    } ] ) 
この例では、次のことは行われません。
- db.collection.watch()メソッドは、- cakeSalesコレクションの変更ストリーム カーソルを作成し、そのカーソルを- cakeSalesCursorに保存します。
- $addFieldsステージは、- clusterTimeSecondsという名前のフィールドを- cakeSalesCursorに追加します。- $clusterTimeは、- cakeSalesコレクション変更のoplogエントリからのタイムスタンプです。 コマンドの応答 を参照してください。
- $tsSecondは- $clusterTimeからの秒数を返します。これは- clusterTimeSecondsに保存されています。
 
カリフォルニア州(CA)とワシントン州(WA)のケーキ販売を含む cakeSales コレクションを作成します。
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 } ] ) 
cakeSalesコレクションの変更をモニターするには、 cakeSalesCursorを使用します。 たとえば、 cakeSalesCursorから次のドキュメントを取得するには、 next()メソッドを使用します。
cakeSalesCursor.next() 
次の出力例では、 cakeSalesコレクションに追加された最初のドキュメントのinsertの詳細を示しています。 clusterTimeSecondsフィールドには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