Docs Menu
Docs Home
/ /
Operadores de tuberías de agregación

$tsIncrement (agregación)

$tsIncrement

Nuevo en la versión 5.1.

Devuelve el ordinal incremental de un marca de tiempo como.long

Cuando ocurren varios eventos dentro del mismo segundo, el ordinal incremental identifica de forma única cada evento.

$tsIncrement sintaxis:

{ $tsIncrement: <expression> }

La expresión debe resolverse en una marca de tiempo.

Tip

$tsIncrement devoluciones:

Cree una colección stockSales que contenga las ventas del mercado financiero de acciones de la empresa:

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

En el constructor de marca de tiempo,:

El siguiente ejemplo utiliza $tsIncrement en una etapa para devolver el ordinal incremental $project del saleTimestamp campo de ventas de stock:

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

En el ejemplo, solo incluye$project los saleTimestamp saleIncrement campos y como se muestra en la siguiente salida:

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

El ejemplo de esta sección utiliza $tsIncrement en un cursor de flujo de cambio para devolver todos los demás cambios realizados en una colección en el mismo segundo de tiempo.

Crea un cursor de flujo de cambios en una colección llamada cakeSales que verás más adelante en esta sección:

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

En el ejemplo, el:

Crea una colección de cakeSales que incluya ventas de pasteles en el estado de California (CA) y 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 }
] )

Para supervisar los cakeSales cambios de la colección,cakeSalesCursor utilice. Por ejemplo, para obtener el siguiente documento cakeSalesCursor de, utilice el next() método:

cakeSalesCursor.next()

Dependiendo del segundo en el que se agregaron los documentos a cakeSales, la salida de cakeSalesCursor.next() varía. Por ejemplo, la adición de documentos podría abarcar más de un segundo.

La siguiente salida de ejemplo cakeSalesCursor.next() muestra los insert detalles del primer documento añadido a la colección cakeSales. Observa que el ordinal incremental i es 2 en el campo clusterTime.

_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 }

Al ejecutar cakeSalesCursor.next() nuevamente, se devuelve el documento cakeSales para el cual el ordinal incremental i de clusterTime es 4, omitiendo el documento donde i es 3.

Volver

$toUpper

En esta página