sql >> Database teknologi >  >> NoSQL >> MongoDB

C# - MongoDB - Opdater et element i et indlejret dokument

Først skal du køre denne kommando i din MongoDB for at anvende de nye funktioner i version 3.6.1 db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )

Her er den kode, du skal bruge til opdateringen:

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

Derudover kan du køre sæt disse indstillinger i din MongoDB for at se på dine endelige forespørgsler og køre dem manuelt i RoboMongo eller Studio 3T for at fejlsøge dem:

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

se efter "OPDATERING"-forespørgslen i logfilen. Derefter kan du nulstille logindstillingen tilbage til 0

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

Jeg har haft det samme problem og stillet det samme spørgsmål. Se her.




  1. 3 enkle trin til at forbedre sikkerheden for din MongoDB-installation

  2. Installation af MongoDB på CentOS 8

  3. Betinget gruppering med $ findes inde i $cond

  4. Hvordan returnerer man ISO-datoformat i PHP til MongoDB?