MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Luồng thay đổi MongoDB 4.4.4 trả về tất cả các bản cập nhật tài liệu thay vì điều kiện lọc phù hợp với một?

tôi đã có thể làm cho nó hoạt động với những điều sau:

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);
        }
    }
}

Nếu bạn không phiền khi sử dụng thư viện, bạn có thể tránh được tất cả các bài hát và điệu nhảy ở trên và mọi thứ có thể được chắt lọc thành những điều sau:

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);
};

xem MongoDB.Entities tài liệu để biết thêm thông tin. tuyên bố từ chối trách nhiệm:tôi là tác giả của thư viện đó.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tích hợp ClusterControl với SNMP:Phần thứ hai

  2. tạo chỉ mục được bao phủ cho khung tổng hợp

  3. Mẹo quản lý sao lưu MongoDB cho các cụm bị chia nhỏ

  4. Có thể sắp xếp, nhóm và giới hạn hiệu quả trong Mongo với một đường ống không?

  5. đặt giá trị mặc định cho mảng mongoose trong nút js