sql >> Database >  >> NoSQL >> MongoDB

C# - MongoDB - Een element in een genest document bijwerken

Eerst moet u deze opdracht in uw MongoDB uitvoeren om de nieuwe functies van versie 3.6.1 toe te passen db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )

Hier is de code die je nodig hebt voor die update:

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

Bovendien kunt u deze instellingen in uw MongoDB instellen om uw laatste zoekopdrachten te bekijken en ze handmatig uitvoeren in RoboMongo of Studio 3T om ze te debuggen:

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

zoek naar de "UPDATE"-query in het logbestand. Daarna kunt u de log-instelling terugzetten naar 0

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

Ik heb hetzelfde probleem gehad en dezelfde vraag gesteld. Bekijk het hier eens.




  1. Hoe GROUP BY te doen in Redis

  2. Handmatig argumenten leveren aan een MongoDB-query om de sorteerfunctie te ondersteunen (voor hoofdletterongevoelige index)

  3. MongoDB opvragen om overeen te komen in het eerste item in een array

  4. Hoe js-bestand in mongo uit te voeren met behulp van lentegegevens