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

Đọc các giá trị trường cụ thể từ MongodbC #

Có một số cách bạn có thể đạt được điều này tùy thuộc vào việc dữ liệu phi cấu trúc của bạn có được biết vào thời gian biên dịch hay thời gian chạy hay không.

Đối với loại biên dịch, bạn có thể mô hình hóa phép chiếu dữ liệu của mình và sử dụng trình tạo phép chiếu để chỉ định cách hoạt động của phép chiếu

var collection = database.GetCollection<Customer>("customers");

var document = new Customer(){Name = "Joe Bloggs", Age = 30, Address = "York"};
collection.InsertOne(document);

var projection = Builders<Customer>
                    .Projection
                    .Include(x => x.Id).Include(x => x.Age);

var customerProjection = await collection.Find(x => true)
                    .Project<CustomerProjection>(projection)
                    .FirstAsync();

Ở trên, chúng tôi đã chỉ định kiểu trả về là đối số chung nhưng nếu chúng tôi bỏ qua điều này thì chúng tôi sẽ được trả về một BsonDocument có thể hữu ích tùy thuộc vào cách sử dụng của bạn

var bsonDocument = await collection.Find(x => true)
                    .Project(projection)
                    .FirstAsync();

Chúng ta cũng có thể đạt được kết quả tương tự bằng cách sử dụng biểu thức linq:

var projection = await collection.Find(x => true)
    .Project(x => new {x.Id, x.Age}).FirstAsync();

Điều này sẽ dẫn đến việc trả về một loại bất thường có Id và Tuổi.

Tuy nhiên, nếu chúng tôi không biết dữ liệu tại thời điểm biên dịch và đang dựa trên các trường của chuỗi ma thuật trong thời gian chạy thì bạn cần phải chuyển vào BsonDocument vào GetCollection phương pháp:

var collection = database.GetCollection<BsonDocument>("customers");

Bây giờ bạn sẽ có thể thực hiện cả hai phương pháp trên để chiếu tài liệu bson nhưng nó sẽ tùy thuộc vào từng trường.

Tuy nhiên, tôi khuyên bạn nên thử sử dụng Trình xây dựng dự án vì nó sẽ giúp cuộc sống của bạn dễ dàng hơn một chút:

var projectionDefinition = Builders<BsonDocument>.Projection
                                        .Include("age")
                                        .Exclude("_id");

var projection = await collection.Find(x => true)
                    .Project(projectionDefinition)
                    .FirstAsync();



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tùy chỉnh tên bean của kho lưu trữ Dữ liệu Mùa xuân để sử dụng với nhiều nguồn dữ liệu

  2. Mongoose this. Model không phải là một chức năng

  3. Tổng hợp Mongo và MongoError:ngoại lệ:BufBuilder đã cố gắng tăng () lên 134217728 byte, vượt quá giới hạn 64MB

  4. kết nối với Mongodb bên trong một docker với GUI la bàn mongodb

  5. Lược đồ tự tham chiếu Mongoose không tạo ObjectId cho tất cả các tài liệu con