Đây là một mẫu mã tôi đã sử dụng để cập nhật bộ sưu tập Watch để truy xuất "sự kiện" khác ngoài cập nhật tài liệu.
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();
Đối số EmptyPiplineDefinition ... Match () cũng có thể là:
"{ $or: [ {operationType: 'replace' }, { operationType: 'insert' }, { operationType: 'update' } ] }"
Nếu bạn muốn sử dụng lệnh $ hoặc hoặc
"{ operationType: /^[^d]/ }"
để ném một chút regex vào đó. Điều cuối cùng này đang nói, tôi muốn tất cả các Loại hoạt động trừ khi chúng bắt đầu bằng chữ 'd'.