MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Baca nilai bidang tertentu dari MongodbC#

Ada beberapa cara untuk mencapainya tergantung pada apakah data tidak terstruktur Anda diketahui pada waktu kompilasi atau waktu proses.

Untuk jenis kompilasi, Anda dapat memodelkan proyeksi data dan menggunakan pembuat proyeksi untuk menentukan cara kerja proyeksi Anda

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();

Di atas kami menentukan tipe pengembalian sebagai argumen umum tetapi jika kami menghilangkan ini maka kami akan mengembalikan BsonDocument yang dapat berguna tergantung pada penggunaan Anda

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

Kami juga dapat mencapai hasil yang sama dengan menggunakan ekspresi linq:

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

Ini akan menghasilkan jenis anonim dengan Id dan Umur.

Namun jika kami tidak mengetahui data pada waktu kompilasi dan mendasarkan bidang string ajaib saat runtime, maka Anda harus memasukkan BsonDocument ke GetCollection metode:

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

Anda sekarang dapat melakukan kedua metode di atas untuk memproyeksikan dokumen bson tetapi akan dilakukan per bidang.

Namun, saya sarankan mencoba menggunakan pembuat Proyek karena akan membuat hidup Anda sedikit lebih mudah:

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. Haruskah kita menggunakan dbref atau dokumen yang disematkan dalam aplikasi yang banyak membaca

  2. Jumlah agregat MongoDB item dalam dua array di dokumen yang berbeda?

  3. Pipa Agregasi Cosmos DB tidak kompatibel (API Mongo)?

  4. MongoDB 4.2.1 - updateMany:Error:dokumen operasi pembaruan harus berisi operator atom

  5. Skema tidak valid, diharapkan `mongodb` atau `mongodb+srv`