MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

C# - MongoDB - Zaktualizuj element wewnątrz zagnieżdżonego dokumentu

Najpierw musisz uruchomić to polecenie w swojej MongoDB, aby zastosować nowe funkcje wersji 3.6.1 db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )

Oto kod potrzebny do tej aktualizacji:

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

Dodatkowo możesz uruchomić ustawianie tych ustawień w MongoDB, aby przejrzeć końcowe zapytania i uruchomić je ręcznie w RoboMongo lub Studio 3T w celu ich debugowania:

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

poszukaj zapytania „UPDATE” w pliku dziennika. Następnie możesz zresetować ustawienia dziennika z powrotem do 0

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

Miałem ten sam problem i zadałem to samo pytanie tutajRzuć okiem na to.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Sortowanie Mongodb bez uwzględniania wielkości liter

  2. Mongoose wybierz pola do powrotu z findOneAndUpdate

  3. Obsługa rozłączeń/ponownych połączeń MongoDB z węzła

  4. Pobierz najnowszą płytę z kolekcji mongodb

  5. Jak korzystać z bibliotek innych firm w glassfish?