データの変更を監視
Watch()
メソッドを使用して、 MongoCollection
、 MongoDatabase
、またはMongoClient
で変更ストリームを開くことができます。
例
Tip
この例の実行方法については、「 の使用例」をお読みください。
次の例では、 restaurants
コレクションの変更ストリームを開き、挿入されたドキュメントを出力します。
coll := client.Database("sample_restaurants").Collection("restaurants") pipeline := mongo.Pipeline{bson.D{{"$match", bson.D{{"operationType", "insert"}}}}} 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!") 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 マニュアルChange Streams のドキュメント