MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Dapatkan pemberitahuan untuk dokumen yang diubah di mongodb

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $acos

  2. Cara menangkap pengecualian saat membuat instance MongoClient

  3. Memahami dan Mengelola Ruang Disk di Server MongoDB Anda

  4. Sisipan MongoDB Banyak ()

  5. Tidak ingin memulai mongod dengan `Sudo mongod`