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

Nâng cấp trong Mongo DB và vấn đề Id

Tôi đã gặp sự cố tương tự. Tôi muốn nâng cấp tài liệu bằng trình điều khiển C # chính thức. Tôi đã có một lớp học như thế này:

public class MyClass
{
    public ObjectId Id { get; set; }
    public int Field1 { get; set; }
    public string Field2 { get; set; }
}

Trong bảng điều khiển, tôi sẽ viết:db.collection.update({Field1: 3},{Field1: 3, Field2: "value"}) và nó sẽ hoạt động. Trong C # tôi đã viết:

collection.Update(Query.EQ("Field1", 3),
                Update.Replace(new MyClass { Field1 = 3, Field2 = "value" }),
                UpdateFlags.Upsert);

và nó đã không hoạt động! Bởi vì trình điều khiển bao gồm id trống trong câu lệnh cập nhật và khi tôi nâng cấp tài liệu thứ hai với giá trị khác của ngoại lệ Field1 E11000 duplicate key error index bị ném (trong trường hợp này Mongo cố gắng chèn một tài liệu có _id đã tồn tại trong db).

Khi tôi tự tạo _id (chẳng hạn như người bắt đầu chủ đề), tôi đã gặp phải ngoại lệ tương tự (mongo cannot change _id of a document ) trên việc nâng cấp các đối tượng có giá trị hiện có của Field1.

Giải pháp là đánh dấu thuộc tính Id theo thuộc tính [BsonIgnoreIfDefault] (và không khởi tạo nó). Trong trường hợp này, trình điều khiển bỏ qua trường _id trong câu lệnh cập nhật và MongoDb tạo Id nếu cần.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Có thể cải thiện tốc độ Mongoexport không?

  2. Tạo khóa duy nhất MongoDB với C #

  3. Bắt các hàng trùng lặp ở bên trái tham gia vào báo cáo Birt

  4. Kết nối đơn giản với mongodb trong ứng dụng react

  5. Lưu Tập hợp con của Bộ sưu tập MongoDB vào Bộ sưu tập khác