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

Chiếu tới một loại khác bằng C # SDK

Tôi đã tìm ra cách để thực hiện ánh xạ mà bạn muốn:

collection
    .Find(Builders<MyType>.Filter.AnyIn(x => x.Documents, new[] { "c" }))
    .Project(Builders<MyType>.Projection.Exclude(c => c.Documents))
    .As<MySubType>()
    .ToList();

Nhưng trước tiên, bạn nên đăng ký ánh xạ cho SubType của mình mà bỏ qua phần tử phụ. Tôi không hiểu nó 100%, có vẻ là lỗi của trình điều khiển, nó không nhận được Documents từ mongo, nhưng biết đấy, MyType có tài sản như vậy. Lưu ý, bạn nên đăng ký ánh xạ lớp học của mình trước trước tiên bạn tạo bộ sưu tập kiểu này.

if (!BsonClassMap.IsClassMapRegistered(typeof(MySubType)))
{
    BsonClassMap.RegisterClassMap<MySubType>(cm =>
    {
        cm.AutoMap();
        cm.SetIgnoreExtraElements(true);
    });
}

Tôi đã làm điều đó với dữ liệu mẫu:

var toInsert = new List<MyType>
{
    new MyType {Id = 1, Name = "bla", Documents =new List<string> {"a", "b", "v"}},
    new MyType {Id = 2, Name = "ada", Documents =new List<string> {"c", "d", "r"}},
};

Và có thể nhận được sản lượng mong đợi:

collection
    .Find(Builders<MyType>.Filter.AnyIn(x => x.Documents, new[] { "c" }))
    .Project(Builders<MyType>.Projection.Exclude(c => c.Documents))
    .As<MySubType>()
    .ToList()
    .Dump();




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách sử dụng cùng một trường nhiều lần trong MongoDB tìm truy vấn trong NodeJS

  2. làm thế nào để đặt khóa bằng var trong mongoose, Node.js?

  3. Phiên bản Mongoose .save () không hoạt động

  4. JBAS011445:Không tải được bộ điều hợp cho nhà cung cấp độ bền 'org.hibernate.ogm.jpa.HibernateOgmPersistence'

  5. MongoDB:tìm và tìm thấy với tính năng lọc mảng lồng nhau