Pada mongodb 3.6, Anda sekarang dapat menghubungkan tindakan ke aliran perubahan. Ini memberi Anda kursor tailable yang dapat Anda gunakan untuk mendengarkan perubahan (misalnya operasi mentah) pada koleksi tertentu.
Aliran perubahan dibangun di atas oplog dan dapat diakses untuk apa pun yang menggunakan oplog. Aliran perubahan dapat dilanjutkan dan juga dapat digunakan dengan operator agregasi seperti $match, $project...
Info lebih lanjut di sini (contoh Java):http://mongodb.github.io/mongo-java-driver/3.6/driver/tutorials/change-streams/
Dan ini cuplikan dari https://www.mongodb.com/mongodb-3.6 (Java):
// 1. The database for reactive, real-time applications
MongoClient mongoClient;
// Create a new MongoClient with a MongoDB URI string.
if (args.length == 0) {
// Defaults to a localhost replicaset on ports: 27017, 27018, 27019
mongoClient = new MongoClient(new
MongoClientURI("mongodb://localhost:27017,localhost:27018,localhost:27019"));
} else {
mongoClient = new MongoClient(new MongoClientURI(args[0]));
}
// Select the MongoDB database.
MongoDatabase database = mongoClient.getDatabase("testChangeStreams");
database.drop();
sleep();
// Select the collection to query.
MongoCollection<Document> collection = database.getCollection("documents");
// Create the change stream cursor.
MongoCursor<Document> cursor = collection.watch().iterator();
Jika Anda bekerja di C#, contohnya dapat ditemukan di sini:
var inventory = database.GetCollection<BsonDocument>("inventory");
var document = new BsonDocument("x", 1);
inventory.InsertOne(document);
new Thread(() =>
{
Thread.Sleep(TimeSpan.FromMilliseconds(100));
var filter = new BsonDocument("_id", document["_id"]);
var update = "{ $set : { x : 2 } }";
inventory.UpdateOne(filter, update);
})
.Start();
// Start Changestream Example 2
var options = new ChangeStreamOptions { FullDocument = ChangeStreamFullDocumentOption.UpdateLookup };
var enumerator = inventory.Watch(options).ToEnumerable().GetEnumerator();
enumerator.MoveNext();
var next = enumerator.Current;
enumerator.Dispose();
// End Changestream Example 2
var expectedFullDocument = document.Set("x", 2);
next.FullDocument.Should().Be(expectedFullDocument);