MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Nhận thông báo cho các tài liệu đã thay đổi trong mongodb

Kể từ mongodb 3.6, bây giờ bạn có thể kết nối các hành động với luồng thay đổi. Điều này cung cấp cho bạn một con trỏ có thể điều chỉnh mà bạn có thể sử dụng để lắng nghe các thay đổi (ví dụ:hoạt động thô) trên một bộ sưu tập cụ thể.

Luồng thay đổi được xây dựng trên oplog và có thể truy cập được đối với bất kỳ thứ gì đang sử dụng oplog. Luồng thay đổi có thể tiếp tục và cũng có thể được sử dụng với các toán tử tổng hợp như $ match, $ project ...

Thông tin thêm tại đây (ví dụ Java):http://mongodb.github.io/mongo-java-driver/3.6/driver/tutorials/change-streams/

Và đây là đoạn mã từ 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();

Nếu bạn đang làm việc trong C #, bạn có thể tìm thấy các ví dụ tại đây:

    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. Cách hợp nhất tài liệu khi nhập tệp vào MongoDB

  2. Làm cách nào để thoát @ trong mật khẩu trong kết nối pymongo?

  3. hiển thị dbs cho biết lỗi lệnh Không được phép thực thi

  4. Cập nhật MongoDB Deep Array

  5. Một ấn phẩm đang ẩn các trường lồng nhau từ một ấn phẩm khác