Menu Docs
Página inicial do Docs
/ / /
Driver GO
/

Monitorar alterações de dados

Você pode abrir um change stream em um MongoCollection, MongoDatabase ou MongoClient usando o método Watch() .

Dica

Leia osExemplos de uso de para saber como executar esse exemplo.

O exemplo a seguir abre um fluxo de alteração na coleção restaurants e imprime documentos inseridos:

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)
}

Veja um exemplo totalmente executável de .

Após executar o exemplo completo, execute o exemplo de uso Inserir um documento em um shell diferente. Quando tiver executado a operação de inserção, você verá o seguinte resultado:

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

Importante

Certifique-se de encerrar esse exemplo de uso assim que terminar, fechando o terminal.

Para saber mais sobre como abrir um fluxo de alterações e lidar com possíveis erros, consulte:

watch()

← Realizar operações em massa