MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cây biểu thức không được hỗ trợ trên UpdateOneAsync

Sự cố bắt đầu xảy ra khi bạn đang cố gắng tạo Update của mình bản tường trình. Như bạn có thể biết -1 được chuyển dưới dạng chỉ mục sẽ là đã dịch tới toán tử $ positional . tài liệu nói rằng

Ngoài ra, bạn đang cố gắng xây dựng điều kiện lọc của mình bằng cách sử dụng SingleOrDefault và trình điều khiển .NET MongoDB không thể dịch điều đó thành bất kỳ toán tử cú pháp truy vấn MongoDB nào.

Làm cách nào để khắc phục điều đó?

Thay vì sử dụng toán tử vị trí, bạn có thể thử sử dụng toán tử được lọc theo vị trí cú pháp.

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. Truy vấn MongoDB / Pymongo với Datetime

  2. Cải thiện các trường truy vấn tồn tại trong MongoDB

  3. phần tử cập nhật mongoid trong mảng

  4. Các phương thức find () và findOne () trong MongoDB hiển thị các kết quả khác nhau

  5. Các phương pháp hay nhất để lưu trữ hiệu quả các băm md5 trong MongoDB