MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Odczytywanie określonych wartości pól z MongodbC#

Można to osiągnąć na kilka sposobów, w zależności od tego, czy dane nieustrukturyzowane są znane w czasie kompilacji lub w czasie wykonywania.

W przypadku typu kompilacji możesz modelować swoją projekcję danych i użyć konstruktora projekcji, aby określić, jak powinna działać projekcja

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

Powyżej określiliśmy zwracany typ jako argument ogólny, ale jeśli go pominiemy, otrzymamy zwrócony BsonDocument co może być przydatne w zależności od sposobu użytkowania

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

Ten sam wynik możemy również osiągnąć za pomocą wyrażenia linq:

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

Spowoduje to zwrócenie annomicznego typu z identyfikatorem i wiekiem.

Jeśli jednak nie znamy danych w czasie kompilacji i opieramy pola magicznych ciągów w czasie wykonywania, musisz przekazać BsonDocument do GetCollection metoda:

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

Teraz będziesz mógł wykonać obie powyższe metody, aby wyświetlić dokument bson, ale będzie to na podstawie pola.

Radzę jednak spróbować użyć kreatorów projektów, ponieważ ułatwią ci to życie:

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. Jak utworzyć plik konfiguracyjny dla MongoDB

  2. Czy MongoDB zapewnia unikalne wartości pola _id podczas używania złożonego klucza fragmentu z _id?

  3. Dlaczego MongoDB nie używa przecięcia indeksu?

  4. Wysyłanie zapytania MongoDB do innego systemu:konwersja do JSON, a następnie dekodowanie do BSON? Jak to zrobić w języku Go?

  5. Obsługa relacji meteor-kątowych