Monitorar alterações de dados
Você pode abrir um change stream em um Collection
, Database
ou Client
usando o método Watch()
.
Exemplo
Dica
Leia os Exemplos de uso para saber como executar este 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 .
Resultado esperado
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.
Informações adicionais
Para saber mais sobre como abrir um fluxo de alterações e lidar com possíveis erros, consulte:
Página de fundamentos sobre fluxo de alterações
Documentação de Change Streams do Manual do MongoDB Server