Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

$tsIncrement(集計)

項目一覧

  • 定義
  • 動作
$tsIncrement

バージョン 5.1 で追加

タイムスタンプからの増分序数をlongとして返します。

同じ秒内に複数のイベントが発生した場合、増分序数は各イベントを一意に識別します。

$tsIncrement 構文:

{ $tsIncrement: <expression> }

タイムスタンプに変換される必要があります。

Tip

以下も参照してください。

$tsIncrement 次の値を返します。

会社の株式金融マーケットの売上情報を含む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) }
] )

タイムスタンプコンストラクター内で、 は次の操作を行います。

次の例では、 ステージで$tsIncrement $projectを使用して、株式販売saleTimestamp フィールドから増分序数を返します。

db.stockSales.aggregate( [
{
$project:
{
_id: 0, saleTimestamp: 1, saleIncrement: { $tsIncrement: "$saleTimestamp" }
}
}
] )

$projectsaleTimestampこの例では、saleIncrement には次の出力に示すように、 フィールドと フィールドのみが含まれています。

{
saleTimestamp: Timestamp({ t: 1622731060, i: 1 }),
saleIncrement: Long("1")
},
{
saleTimestamp: Timestamp({ t: 1622731060, i: 2 }),
saleIncrement: Long("2")
},
{
saleTimestamp: Timestamp({ t: 1714124193, i: 1 }),
saleIncrement: Long("1")
},
{
saleTimestamp: Timestamp({ t: 1714124193, i: 2 }),
saleIncrement: Long("2")
},
{
saleTimestamp: Timestamp({ t: 1714124193, i: 3 }),
saleIncrement: Long("3")
}

このセクションの例では、$tsIncrement 変更ストリーム カーソル で を使用して、同じ秒数内にコレクションに対して行われた他のすべての変更を返します。

このセクションの後半では、 cakeSalesという名前のコレクションに変更ストリーム カーソルを作成します。

cakeSalesCursor = db.cakeSales.watch( [
{
$match: {
$expr: {
$eq: [
{ $mod: [ { $tsIncrement: "$clusterTime" } , 2 ] },
0
]
}
}
}
] )

この例では、次のことは行われません。

カリフォルニア州(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に追加された秒数によって、 cakeSalesCursor.next()からの出力は異なります。 たとえば、ドキュメントの追加は 1 秒を超えることがあります。

次のcakeSalesCursor.next()出力の例には、 cakeSalesコレクションに追加された最初のドキュメントのinsertの詳細が示されています。 clusterTimeフィールドでは、増分序数i2であることに注意してください。

_id: {
_data: '82613A4F25000000022B022C0100296E5A100454C5BFAF538C47AB950614F43889BE00461E5F696400290004'
},
operationType: 'insert',
clusterTime: Timestamp({ t: 1631211301, i: 2 }),
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 }

cakeSalesCursor.next()を再度実行すると、 clusterTimeの増分序数i 4であるcakeSalesドキュメントが返され、 i3であるドキュメントは省略されます。

戻る

$toUUID

項目一覧