Zuerst müssen Sie diesen Befehl in Ihrer MongoDB ausführen, um die neuen Funktionen von Version 3.6.1 db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )
anzuwenden
Hier ist der Code, den Sie für dieses Update benötigen:
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);
Darüber hinaus können Sie diese Einstellungen in Ihrer MongoDB ausführen, um Ihre endgültigen Abfragen anzuzeigen, und sie manuell in RoboMongo oder Studio 3T ausführen, um sie zu 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
Suchen Sie in der Protokolldatei nach der Abfrage "UPDATE". Danach können Sie die Protokolleinstellung wieder auf 0 zurücksetzen
db.setProfilingLevel(0)
db.setLogLevel(0)
Ich hatte das gleiche Problem und habe hier die gleiche Frage gestelltSchauen Sie es sich an.