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

Cách sửa lỗi {document} .Id không được hỗ trợ

Tôi đã phải đối mặt với cùng một vấn đề. Sau khi gỡ lỗi bằng mã MongoDB, tôi thấy rằng một bộ nối tiếp khác được áp dụng khi sử dụng giao diện thay vì loại cụ thể. Trong trường hợp này, DiscriminationInterfaceSerializer được sử dụng làm bộ tuần tự cho giao diện, trong khi BsonClassMapSerializer được sử dụng cho loại cụ thể.

Với bộ tuần tự này cho giao diện, sơ đồ lớp của lớp triển khai không được liên kết với giao diện. Do đó, không biết rằng Id là trường id bson và nên được ánh xạ tới khóa '_id'. Đó là lý do tại sao ngoại lệ được nêu ra.

Giải pháp phù hợp với tôi là sử dụng ImpliedImplementationInterfaceSerializer :

[BsonSerializer(typeof(ImpliedImplementationInterfaceSerializer<IEntity, Entity>))]
public interface IEntity 
{ 
   // snip...
}

Thuộc tính này đăng ký bộ tuần tự hóa và xác định sử dụng bản đồ lớp bson của Thực thể cho IEntity để thuộc tính Id sẽ được ánh xạ đúng cách. Tôi đã tìm thấy giải pháp này nhờ @Robert Baker trong câu trả lời của anh ấy tại đây:Deserialize đối tượng làm giao diện với MongoDB C # Driver



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Truy cập trực tiếp MongoDB qua JavaScript

  2. nodejs nhận kết quả tìm thấy trong mongodb

  3. MongoDB:Ánh xạ mảng lồng nhau trong hàm tổng hợp

  4. MongoDb:Làm thế nào để chèn đối tượng bổ sung vào bộ sưu tập đối tượng?

  5. Sử dụng findOne trong mongodb để lấy phần tử có id tối đa