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

Loại bỏ các loại đa hình với MongoDB C # Driver

Tại sao bạn có cùng một "Id ObjectId công khai;" trong mỗi lớp dẫn xuất? Nó không thực sự là một ý kiến ​​hay. Nó ẩn trường Id gốc.

Để giải quyết vấn đề của bạn, bạn cần "đăng ký" các lớp dẫn xuất của mình (giống như trong bất kỳ cơ chế tuần tự hóa / giải mã hóa nào). Có 3 cách để thực hiện:

  1. Cách khai báo - trang trí lớp Node cơ sở với:

    [BsonKnownTypes(typeof(PlotNode), typeof(EndNode))]
    
  2. Cách chung - khi các loại được biết tại thời điểm biên dịch:

    BsonClassMap.RegisterClassMap<PlotNode>();
    BsonClassMap.RegisterClassMap<EndNode>();
    
  3. Cách động - khi các loại không xác định tại thời điểm biên dịch:

    BsonClassMap.LookupClassMap(typeof(PlotNode));
    BsonClassMap.LookupClassMap(typeof(EndNode));
    

  • Một đề xuất khác - sử dụng LINQ thay vì Truy vấn

    Node node = collection.AsQueryable().FirstOrDefault(n => n.Id == id);
    



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. id con trỏ mongodb lỗi không hợp lệ

  2. Toán tử $ unwind trong MongoDB là gì?

  3. Sắp xếp một kết quả được đặt ngẫu nhiên trong mongo

  4. Làm cách nào để nối các mảng từ nhiều tài liệu trong MongoDB?

  5. Hướng dẫn kiểm tra cơ sở dữ liệu nguồn mở DevOps - Mọi thứ bạn nên biết