Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / /

$tsIncrement(집계)

이 페이지의 내용

  • 정의
  • 행동
  • 예제
$tsIncrement

버전 5.1에 추가되었습니다.

타임스탬프 에서 증가하는 서수를 long 로 반환합니다.

동일한 초 내에 여러 이벤트가 발생하는 경우 증가하는 서수는 각 이벤트를 고유하게 식별합니다.

$tsIncrement 구문:

{ $tsIncrement: <expression> }

표현식타임스탬프로 해석되어야 합니다.

다음도 참조하세요.

$tsIncrement 반환합니다:

  • 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) }
] )

타임스탬프 생성자에서 다음을 수행합니다.

다음 예제에서는 $tsIncrement $project 단계에서 를 사용하여 주식 판매 saleTimestamp 필드에서 증가하는 서수를 반환합니다.

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

이 예제에서 $project 에는 다음 출력과 같이 saleTimestampsaleIncrement 필드만 포함됩니다.

{
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 collection을 생성합니다.

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() 예제 출력은 insert cakeSales collection에 추가된 첫 번째 문서의 세부 정보를 보여줍니다. 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 증분 서수 i4cakeSales 문서가 반환되고, i3 인 문서는 생략됩니다.

돌아가기

$toUpper

이 페이지의 내용