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

Drzewo wyrażeń nie jest obsługiwane w UpdateOneAsync

Problem zaczyna się, gdy próbujesz zbudować swoją Update oświadczenie. Jak zapewne wiesz -1 przekazany jako indeks będzie przetłumaczone do operatora pozycyjnego $ . dokumentacja mówi, że

Dodatkowo próbujesz zbudować warunek filtrowania za pomocą SingleOrDefault a sterownik .NET MongoDB nie jest w stanie przetłumaczyć tego na żaden operator składni zapytań MongoDB.

Jak to naprawić?

Zamiast używać operatora pozycyjnego, możesz spróbować użyć operatora filtrowanego pozycyjnego składnia.

var filter = Builders<NodeBoardModel>.Filter.Eq(f => f.Id, sId);
var update = Builders<NodeBoardModel>.Update.Set("RemoteBoard.apps.$[app].objects.$[object].config_docs.$[configdoc].config_dt", dtUpdated);

var arrayFilters = new List<ArrayFilterDefinition>();
ArrayFilterDefinition<BsonDocument> appFilter = new BsonDocument("app.appname", new BsonDocument("$eq", sAppName));
ArrayFilterDefinition<BsonDocument> objectFilter = new BsonDocument("object.name", new BsonDocument("$eq", sModelName));
ArrayFilterDefinition<BsonDocument> configDocFilter = new BsonDocument("configdoc.config_id", new BsonDocument("$eq", iObjectId));

arrayFilters.AddRange(new[] { appFilter, objectFilter, configDocFilter });

var updateOptions = new UpdateOptions { ArrayFilters = arrayFilters };

var res = Col.UpdateOne(filter, update, updateOptions);



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Błąd zależności czasu wykonywania MongoDB Reactive Streams ze złączem Alpakka Mongo ClassNotFoundException

  2. Uzyskaj indeks elementu w zapytaniu mongodb

  3. Mongoose:czy niestandardowy _id musi być zadeklarowany jako indeks i być unikalny?

  4. Przestaw wiersze na kolumny w MongoDB

  5. Jak bezpiecznie zignorować zduplikowane błędy klucza za pomocą insert_many