Puede abrir un flujo de cambios en un Collection, Database o Client utilizando el método Watch().
Ejemplo
Tip
Lea el Ejemplos de uso para aprender a ejecutar este ejemplo.
El siguiente ejemplo abre un flujo de cambios en la colección restaurants e imprime los documentos insertados:
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) }
Resultado esperado
Después de ejecutar el ejemplo completo, ejecute el ejemplo de uso de Insertar un documento en un shell diferente. Una vez ejecutada la operación de inserción, debería ver el siguiente resultado:
// results truncated { "_id": ..., "name": "8282", "cuisine": "Korean" }
Importante
Asegúrese de cerrar este ejemplo de uso una vez que termine cerrando su terminal.
Información Adicional
Para obtener más información sobre cómo abrir un flujo de cambios y manejar posibles errores, consulte:
Página de fundamentos sobre los flujos de cambio
Documentación de flujos de cambios delmanual del servidor MongoDB