sql >> Database teknologi >  >> NoSQL >> MongoDB

Få besked om ændrede dokumenter i mongodb

Fra mongodb 3.6 kan du nu tilslutte handlinger til ændringsstrømmen. Dette giver dig en tailable cursor, som du kan bruge til at lytte til ændringer (f.eks. crud-operationer) på en bestemt samling.

Ændringsstrømmen er bygget oven på oploggen og er tilgængelig for alt, der bruger oploggen. Ændringsstrømmene kan genoptages og kan også bruges med aggregeringsoperatorer såsom $match, $project...

Mere info her (Java-eksempel):http://mongodb.github.io/mongo-java-driver/3.6/driver/tutorials/change-streams/

Og her er uddraget fra 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();

Hvis du arbejder i C#, kan du finde eksempler her:

    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. MongoDB:Hvordan opdaterer jeg et enkelt underelement i et array, refereret af indekset i arrayet?

  2. Hvad er forskellen mellem replaceOne() og updateOne() i MongoDB?

  3. indsætMange Håndter Duplikatfejl

  4. MongoDB tælle kommando