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

C # - MongoDB - Cập nhật một phần tử bên trong Tài liệu lồng nhau

Trước tiên, bạn cần chạy lệnh này trong MongoDB của mình để áp dụng các tính năng mới của phiên bản 3.6.1 db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )

Đây là mã bạn cần cho bản cập nhật đó:

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

Ngoài ra, bạn có thể chạy thiết lập các cài đặt này trong MongoDB của mình để xem xét các truy vấn cuối cùng của bạn và chạy chúng theo cách thủ công trong RoboMongo hoặc Studio 3T để gỡ lỗi chúng:

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

tìm truy vấn "CẬP NHẬT" trong tệp nhật ký. Sau đó, bạn có thể đặt lại cài đặt nhật ký về 0

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

Tôi đã gặp vấn đề tương tự và đã hỏi câu hỏi tương tự Tại đây. Hãy xem nó.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách khôi phục một bộ sưu tập cụ thể trong MongoDB bằng cách sử dụng sao lưu logic

  2. Đang cố gắng lấy danh sách các bộ sưu tập từ mongoose

  3. Giảm hiệu suất nghiêm trọng với Luồng thay đổi MongoDB

  4. MongoDB đối phó với các bản cập nhật đồng thời như thế nào?

  5. Cách tìm kiếm trong mảng đối tượng trong mongodb