Puedes abrir un flujo de cambios en un Collection. Database, o Client mediante el método Watch().
Ejemplo
Tip
Lea la Ejemplos de uso para aprender cómo 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, ejecuta el Ejemplo de uso de Insertar un documento en una shell diferente. Una vez que ejecutes la operación de inserción, deberías ver la siguiente salida:
// results truncated { "_id": ..., "name": "8282", "cuisine": "Korean" }
Importante
Asegúrate de cerrar este ejemplo de uso una vez que hayas terminado cerrando tu terminal.
Información Adicional
Para obtener más información sobre cómo abrir un flujo de cambios y manejar posibles errores, consulta:
Página de Fundamentos sobre flujos de cambios
MongoDB Server Manual Documentación de Change Streams