聚合 $changeStream
阶段将打开一个更改流游标,用于实时跟踪数据更改。 此阶段使应用程序能够响应集合中发生的插入、更新、删除和其他作。
Syntax
$changeStream
阶段的语法如下所示:
{
$changeStream: {
allChangesForCluster: <boolean>,
fullDocument: <string>,
fullDocumentBeforeChange: <string>,
resumeAfter: <ResumeToken>,
startAfter: <ResumeToken>,
startAtOperationTime: <Timestamp>,
showExpandedEvents: <boolean>
}
}
参数
参数 | Description |
---|---|
allChangesForCluster |
可选。 布尔值。 如果为 true,则返回整个群集的更改。 默认值为 false。 |
fullDocument |
可选。 String. 确定要返回的更新作的内容。 选项:“default”、“updateLookup”、“whenAvailable”、“required”。 |
fullDocumentBeforeChange |
可选。 String. 返回文档的预映像。 选项:“off”、“whenAvailable”、“required”。 |
resumeAfter |
可选。 恢复令牌以在特定事件后恢复更改流。 |
startAfter |
可选。 恢复令牌,以在特定事件后启动更改流。 |
startAtOperationTime |
可选。 从特定时间开始更改流的时间戳。 |
showExpandedEvents |
可选。 布尔值。 包括另一个更改流事件。 默认值为 false。 |
例子
让我们了解存储集合的使用情况,以便监视实时更改。
示例 1:监视存储集合中的所有更改
该示例演示如何设置更改流以监视存储集合中的所有更改。
db.stores.aggregate([
{
$changeStream: {
fullDocument: "updateLookup"
}
}
])
更新存储文档时,更改流将返回包含完整文档的更改事件。
{
"_id": { "_data": "AeARBpQ/AAAA" },
"operationType": "update",
"fullDocument": {
"_id": "905d1939-e03a-413e-a9c4-221f74055aac",
"name": "Trey Research | Home Office Depot - Lake Freeda",
"sales": {
"revenue": 42500
},
"company": "Trey Research",
"lastUpdated": ISODate("2024-06-16T10:30:00.000Z")
},
"ns": {
"db": "StoreData",
"coll": "stores"
},
"documentKey": {
"_id": "905d1939-e03a-413e-a9c4-221f74055aac"
}
}
相关内容
- 查看有关 从 MongoDB 迁移到适用于 MongoDB 的 Azure Cosmos DB (vCore) 的选项。
- 详细了解 与 MongoDB 的功能兼容性。