sql >> Database >  >> NoSQL >> MongoDB

Hoe MongoDB Change Stream 'OperationType' in het C#-stuurprogramma instellen?

Hier is een voorbeeld van code die ik heb gebruikt om de collectie bij te werken. Watch om andere "gebeurtenissen" op te halen dan alleen documentupdates.

IMongoDatabase sandboxDB = mongoClient.GetDatabase("Sandbox");
IMongoCollection<BsonDocument> collection = sandboxDB.GetCollection<BsonDocument>("TestCollection");

//Get the whole document instead of just the changed portion
ChangeStreamOptions options = new ChangeStreamOptions() { FullDocument = ChangeStreamFullDocumentOption.UpdateLookup };

//The operationType can be one of the following: insert, update, replace, delete, invalidate
var pipeline = new EmptyPipelineDefinition<ChangeStreamDocument<BsonDocument>>().Match("{ operationType: { $in: [ 'replace', 'insert', 'update' ] } }");

var changeStream = collection.Watch(pipeline, options).ToEnumerable().GetEnumerator();
changeStream.MoveNext();    //Blocks until a document is replaced, inserted or updated in the TestCollection
ChangeStreamDocument<BsonDocument> next = changeStream.Current;
enumerator.Dispose();

Het argument EmptyPiplineDefinition...Match() kan ook zijn:

"{ $or: [ {operationType: 'replace' }, { operationType: 'insert' }, { operationType: 'update' } ] }"

Als je het $or commando wilt gebruiken, of

"{ operationType: /^[^d]/  }"

om er een beetje regex in te gooien. Deze laatste zegt:ik wil alle operationsTypes, tenzij ze beginnen met de letter 'd'.




  1. Een open Redis-verbinding behouden met BookSleeve

  2. Mongoïde met rails, attr_accessible --> Geen methode gevonden

  3. Bewaar datum in MongoDB zonder rekening te houden met de tijdzone

  4. een belofte oplossen met behulp van mongodb en nodejs