मैं इसे निम्नलिखित के साथ काम करने में सक्षम था:
var options = new ChangeStreamOptions
{
FullDocument = ChangeStreamFullDocumentOption.UpdateLookup,
BatchSize = 1
};
var filter = Builders<ChangeStreamDocument<UserInfo>>
.Filter.Where(x =>
x.OperationType == ChangeStreamOperationType.Update &&
x.FullDocument.UserName.Contains("Alice"));
filter &= Builders<ChangeStreamDocument<UserInfo>>.Filter.Exists("updateDescription.updatedFields.Password");
var pipeline = new IPipelineStageDefinition[]
{
PipelineStageDefinitionBuilder.Match(filter)
};
using (var cursor = await collection.WatchAsync<ChangeStreamDocument<UserInfo>>(pipeline, options))
{
while (await cursor.MoveNextAsync())
{
foreach (var info in cursor.Current)
{
Console.WriteLine("Updated: " + info.FullDocument.UserName);
}
}
}
यदि आपको पुस्तकालय का उपयोग करने में कोई आपत्ति नहीं है, तो उपरोक्त सभी गीत और नृत्य से बचा जा सकता है और चीजों को निम्न तक पहुँचाया जा सकता है:
var watcher = DB.Watcher<UserInfo>("on-alice-updates-password");
watcher.Start(
eventTypes: EventType.Updated,
filter: b => b.Where(x => x.FullDocument.UserName == "Alice") &
b.Exists("updateDescription.updatedFields.Password"));
watcher.OnChanges += docs =>
{
foreach (var doc in docs)
Console.WriteLine("Updated: " + doc.UserName);
};
MongoDB.Entities देखें अधिक जानकारी के लिए डॉक्स। अस्वीकरण:मैं उस पुस्तकालय का लेखक हूं।