MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

MongoDB 4.4.4 परिवर्तन स्ट्रीम एक से मेल खाने वाली फ़िल्टर की गई स्थिति के बजाय सभी दस्तावेज़ अपडेट लौटाता है?

मैं इसे निम्नलिखित के साथ काम करने में सक्षम था:

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 देखें अधिक जानकारी के लिए डॉक्स। अस्वीकरण:मैं उस पुस्तकालय का लेखक हूं।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB संग्रहीत प्रक्रिया समतुल्य

  2. पायमोंगो और टूअरे () विधि

  3. MongoDB में स्ट्रिंग्स के रूप में Enums संग्रहीत करना

  4. एटलस मोंगो डेटाबेस से जुड़ना

  5. सरणी पर mongoDB अपरर्ट