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

C# - MongoDB - Актуализиране на елемент във вложен документ

Първо, трябва да изпълните тази команда във вашия MongoDB, за да приложите новите функции на версия 3.6.1 db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )

Ето кода, който ви е необходим за тази актуализация:

var filter = Builders<YOUR_CLASS>.Filter.Eq("_id", new ObjectId("5a55775cbd12982cc063c71a"));
var update = Builders<YOUR_CLASS>.Update.Set("Cartons.$[i].Skus.$[j].ShippedQuantity", 50);

var arrayFilters = new List<ArrayFilterDefinition>
{
    new BsonDocumentArrayFilterDefinition<Setup>(new BsonDocument("i._id", new ObjectId("5a5575bcbd12982cc063b718"))),
    new BsonDocumentArrayFilterDefinition<Setup>(new BsonDocument("j._ID", new ObjectId("5a5575bcbd12982cc063b719")))
};
var updateOptions = new UpdateOptions { ArrayFilters = arrayFilters };
var (updated, errorMessage) = await UpdateOneAsync(filter, update, updateOptions);

Освен това можете да стартирате set тези настройки във вашата MongoDB, за да разгледате окончателните си заявки и да ги стартирате ръчно в RoboMongo или Studio 3T, за да ги отстраните:

db.setProfilingLevel(2)   -> to view query logs under C:\data\log\mongod.log
db.setLogLevel(5)         -> to view query logs under C:\data\log\mongod.log

потърсете заявката "UPDATE" в регистрационния файл. След това можете да нулирате настройката на дневника обратно на 0

db.setProfilingLevel(0)
db.setLogLevel(0)

Имах същия проблем и зададох същия въпрос Ето Виж го.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB.Driver.Builders как да групирате и да получите средно

  2. Активиране на компресиране на данни в MongoDB 3.0

  3. Актуализирайте елемента в масива, ако съществува, иначе вмъкнете нов елемент в този масив в MongoDb

  4. Разстояние за печат на MongoDB между две точки

  5. Cassandra срещу MongoDB:кое да изберете