监控数据变更
您可以在一个使用 Watch()
方法通过 Collection
、Database
或 Client
。
示例
提示
阅读用法示例 了解如何运行此示例。
以下示例在 restaurants
集合上打开更改流并打印插入的文档
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" }
重要
完成操作后,请确保通过关闭您的终端来关闭此用法示例。
更多信息
有关打开更改流和处理潜在错误的更多信息,请参阅