sql >> Databáze >  >> NoSQL >> MongoDB

C# - MongoDB - Aktualizace prvku uvnitř vnořeného dokumentu

Nejprve musíte tento příkaz spustit v MongoDB, abyste použili nové funkce verze 3.6.1 db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )

Zde je kód, který potřebujete pro tuto aktualizaci:

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

Kromě toho můžete v MongoDB spustit nastavení těchto nastavení, abyste se podívali na své konečné dotazy a spustit je ručně v RoboMongo nebo Studio 3T, abyste je odladili:

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

vyhledejte v souboru protokolu dotaz „UPDATE“. Poté můžete resetovat nastavení protokolu zpět na 0

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

Měl jsem stejný problém a položil jsem stejnou otázku. Zde se na to podívejte.




  1. Naformátujte číslo jako měnu v SQL

  2. SSL připojení k Redis s StackExchange.Redis

  3. Operátor agregačního potrubí MongoDB $max

  4. MongoDB Zobrazit položky dětí ve vztahu One to Many