Definición
Nuevo en la versión 5.1.
Devuelve los segundos de un marca de tiempo como.long
$tsSecond sintaxis:
{ $tsSecond: <expression> }
La expresión debe resolverse en una marca de tiempo.
Comportamiento
$tsSecond devoluciones:
Nullsi la expresión de entrada evalúa anullo hace referencia a un campo que falta.Un error si la expresión de entrada no evalúa una marca de tiempo.
Ejemplos
Obtener el número de segundos de un campo de marca de tiempo
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 primer valor es el número de segundos después de la época de Unix.
El segundo valor es el ordinal creciente. Cuando ocurren varios eventos en el mismo segundo, el ordinal creciente identifica de forma única cada evento.
El siguiente ejemplo utiliza en $tsSecond $project una etapa de canalización para devolver los segundos saleTimestamp del campo de ventas de stock:
db.stockSales.aggregate( [ { $project: { _id: 0, saleTimestamp: 1, saleSeconds: { $tsSecond: "$saleTimestamp" } } } ] )
Ejemplo de salida:
{ 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") }
Utilice $tsSecond en un cursor de flujo de cambios para supervisar los cambios de la colección
El ejemplo de esta sección utiliza $tsSecond en un cursor de flujo de cambios para monitorear los cambios en una colección.
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( [ { $addFields: { clusterTimeSeconds: { $tsSecond: "$clusterTime" } } } ] )
En el ejemplo, el:
db.collection.watch()El método crea un cursor de flujo de cambio para lacakeSalescolección y almacena el cursorcakeSalesCursoren.$addFieldsLa etapa agrega un campo llamadoclusterTimeSecondscakeSalesCursora.
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()
El siguiente ejemplo muestra los detalles insert del primer documento añadido a la colección cakeSales. El campo clusterTimeSeconds contiene los segundos del campo 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