Docs 菜单
Docs 主页
/ / /
Go 驱动程序
/

监控数据变化

您可以使用Watch()方法在 CollectionDatabaseClient上打开change stream。

提示

参阅使用示例,了解如何运行此示例。

以下示例在restaurants collection 上打开 change stream 并打印插入的文档:

coll := client.Database("sample_restaurants").Collection("restaurants")
// Creates instructions to watch for insert operations
pipeline := mongo.Pipeline{bson.D{{"$match", bson.D{{"operationType", "insert"}}}}}
// Creates a change stream that receives change events
cs, err := coll.Watch(context.TODO(), pipeline)
if err != nil {
panic(err)
}
defer cs.Close(context.TODO())
fmt.Println("Waiting For Change Events. Insert something in MongoDB!")
// Prints a message each time the change stream receives an event
for cs.Next(context.TODO()) {
var event bson.M
if err := cs.Decode(&event); err != nil {
panic(err)
}
output, err := json.MarshalIndent(event["fullDocument"], "", " ")
if err != nil {
panic(err)
}
fmt.Printf("%s\n", output)
}
if err := cs.Err(); err != nil {
panic(err)
}

查看 完全可运行的示例。

运行完整示例后,在不同的 shell 中运行插入文档使用示例。运行插入操作后,应会看到以下输出:

// results truncated
{
"_id": ...,
"name": "8282",
"cuisine": "Korean"
}

重要

完成后请务必关闭终端以关闭此使用示例。

要了解有关打开变更流和处理潜在错误的更多信息,请参阅:

  • 关于变更流的基础知识页面

  • MongoDB Server 手册变更流

watch()

后退

批量操作