Definition定义
$tsSecond
New in version 5.1.在版本5.1中新增。
Returns the seconds from a timestamp as a 将时间戳中的秒数作为long.long返回。
$tsSecond syntax:语法:
{ $tsSecond: <expression> }
The expression must resolve to a timestamp.表达式必须解析为时间戳。
Behavior行为
$tsSecond returns:返回:
如果输入表达式的计算结果为Nullif the input expression evaluates tonullor refers to a field that is missing.Null或引用缺少的字段,则返回Null。An error if the input expression does not evaluate to a timestamp.如果输入表达式的计算结果不是时间戳,则会出错。
Examples示例
Obtain the Number of Seconds from a Timestamp Field从时间戳字段获取秒数
Create a 创建包含公司股票金融市场销售的stockSales collection that contains company stock financial market sales: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) }
] )
In the timestamp constructor, the:在时间戳构造函数中
First value is the number of seconds after the Unix epoch.第一个值是Unix纪元后的秒数。Second value is the incrementing ordinal. When multiple events happen within the same second, the incrementing ordinal uniquely identifies each event.第二个值是递增序号。当多个事件在同一秒内发生时,递增的序号唯一标识每个事件。
The following example uses 以下示例在$tsSecond in a $project pipeline stage to return the seconds from the stock sales saleTimestamp field:$project管道阶段中使用$tsSecond从股票销售saleTimestamp字段返回秒数:
db.stockSales.aggregate( [
{
$project:
{
_id: 0, saleTimestamp: 1, saleSeconds: { $tsSecond: "$saleTimestamp" }
}
}
] )
Example output:示例输出:
{
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")
}Use $tsSecond in a Change Stream Cursor to Monitor Collection Changes在更改流游标中使用$tsSecond来监视集合更改
$tsSecond in a Change Stream Cursor to Monitor Collection ChangesThe example in this section uses 本节中的示例在更改流游标中使用$tsSecond in a change stream cursor to monitor changes to a collection.$tsSecond来监视对集合的更改。
Create a change stream cursor on a collection named 在本节稍后将看到的名为cakeSales that you will see later in this section:cakeSales的集合上创建一个更改流游标:
cakeSalesCursor = db.cakeSales.watch( [
{
$addFields: {
clusterTimeSeconds: { $tsSecond: "$clusterTime" }
}
}
] )
In the example, the:在该示例中:
db.collection.watch()method creates a change stream cursor for thecakeSalescollection and stores the cursor incakeSalesCursor.db.collection.watch()方法为cakeSales集合创建一个更改流游标,并将游标存储在cakeSalesCursor中。$addFieldsstage adds a field namedclusterTimeSecondstocakeSalesCursor.$addFields阶段将名为clusterTimeSeconds的字段添加到cakeSalesCursor中。$clusterTimeis the timestamp from the oplog entry for the是来自oplog条目的cakeSalescollection change.cakeSales集合更改的时间戳。$clusterTime是来自oplog条目的cakeSales集合更改的时间戳。See Command Response.请参阅命令响应。$tsSecondreturns the seconds from返回存储在$clusterTime, which is stored inclusterTimeSeconds.clusterTimeSeconds中的$clusterTime中的秒数。
Create a 创建一个cakeSales collection that contains cake sales in the states of California (CA) and Washington (WA):cakeSales集合,其中包含加利福尼亚州(CA)和华盛顿州(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 }
] )
To monitor the 要监视cakeSales collection changes, use cakeSalesCursor. For example, to obtain the next document from cakeSalesCursor, use the next() method:cakeSales集合的更改,请使用cakeSalesCursor。例如,要从cakeSalesCursor获取下一个文档,请使用next()方法:
cakeSalesCursor.next()
The following example output shows the 以下示例输出显示了添加到insert details for the first document added to the cakeSales collection. The clusterTimeSeconds field contains the seconds from the clusterTime field.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