MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Upsert речник в MongoDb

Можете да преминете през всички свойства, които искате да актуализирате/вмъкнете, и да го направите за всяко свойство:

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

Предишна версия на отговора, с множество актуализации:

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

Имайте предвид, че това само ще добави нови ключове/стойности или ще актуализира съществуващите, това няма да премахне нищо.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:как да намерите 10 произволни документа в колекция от 100?

  2. Как да покажа подробности за pymongo.errors.OperationFailure?

  3. yum инсталирането на mongodb 3.2 е неуспешно

  4. Как изпълнявате find(id:{$in:[list]}) с помощта на vertx-mongo клиент

  5. Как да стартирате команда mongo с mongo-go-driver?