MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Получавайте известия за променени документи в mongodb

От mongodb 3.6 вече можете да прикачите действия към потока за промени. Това ви дава tailable курсор, който можете да използвате, за да слушате промени (напр. crud операции) в конкретна колекция.

Потокът за промяна е изграден върху oplog и е достъпен за всичко, което използва oplog. Потоците за промяна са възобновяеми и също могат да се използват с оператори за агрегиране като $match, $project...

Повече информация тук (пример на Java):http://mongodb.github.io/mongo-java-driver/3.6/driver/tutorials/change-streams/

А ето и фрагмента от 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();

Ако работите в C#, примери можете да намерите тук:

    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 за поддържане на функция за съпоставяне (за индекс, нечувствителен към малки и големи букви)

  2. Актуализация на Mongoose без обратно повикване

  3. Съобщение за грешка:MongoError:неуспешно удостоверяване чрез URI низ

  4. 5 начина за избор на редове с минимална стойност за тяхната група в SQL

  5. 'process.nextTick(function() { throw err; })' - Undefined не е функция (mongodb/mongoose)