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

Nâng cấp từ điển trong MongoDb

Bạn có thể xem qua tất cả các thuộc tính bạn muốn cập nhật / chèn và thực hiện điều đó cho từng thuộc tính:

UpdateDefinition<Site> upsert = null;
if (properties.Any())
{
    var firstprop = properties.First();
    upsert = Builders<Site>.Update.Set(nameof(Site.Properties) + "." + firstprop.Key, 
                               firstprop.Value);

    foreach (var updateVal in properties.Skip(1))
    {
        upsert = upsert.Set(nameof(Site.Properties) + "." + updateVal.Key, 
                                          updateVal.Value);
    }

    collection.UpdateOne(r => r.Id == "YourId", upsert, 
                                               new UpdateOptions { IsUpsert = true });
}

Phiên bản trước của câu trả lời, với nhiều bản cập nhật:

foreach (var updateVal in properties)
{
    collection.UpdateOne(r => r.Id == "YourId", 
        Builders<Site>.Update.Set( nameof(Site.Properties)+ "." + updateVal.Key, 
                                   updateVal.Value), 
                                   new UpdateOptions { IsUpsert = true});
}

Lưu ý, điều đó sẽ chỉ thêm Khóa / Giá trị mới hoặc cập nhật hiện có, điều này sẽ không xóa bất kỳ thứ gì.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. truy vấn mongoDB WHERE _id> ngưỡng

  2. Không thể lấy dữ liệu đối tượng Yii2 được trả về dưới dạng Json

  3. Gọi lại Node.js với bản cập nhật MongoDB không bao giờ trả về mặc dù nó cập nhật DB

  4. truy vấn mongodb với cả AND và OR

  5. MongoDB - cập nhật tài liệu phụ bằng cách sử dụng $ set