MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Прочетете стойности на конкретни полета от MongodbC#

Има няколко начина, по които можете да постигнете това в зависимост от това дали вашите неструктурирани данни са известни по време на компилиране или по време на изпълнение.

За тип компилиране можете да моделирате своята проекция на данните и да използвате конструктора на проекция, за да посочите как трябва да работи вашата проекция

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

По-горе посочихме типа на връщането като общ аргумент, но ако пропуснем това, тогава ще ни бъде върнат BsonDocument което може да бъде полезно в зависимост от вашата употреба

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

Можем също да постигнем същия резултат, като използваме linq израз:

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

Това ще доведе до връщане на анонимен тип с идентификатор и възраст.

Ако обаче не знаем данните по време на компилиране и базираме полетата на магически низове по време на изпълнение, тогава ще трябва да подадете BsonDocument към GetCollection метод:

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

Вече ще можете да използвате и двата метода по-горе, за да проектирате bson документа, но това ще бъде на базата на поле.

Въпреки това бих ви посъветвал да опитате да използвате създателите на проекти, тъй като това ще направи живота ви малко по-лесен:

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. Добре ли е да превърнете mongo ObjectId в низ и да го използвате за URL адреси?

  2. Изграждане на индекс на MongoDB – предотвратяване на потребителите да задействат нови компилации

  3. Изпълнение на MongoDB Compass на Mac

  4. MongoDB Сиатъл 2014

  5. MongoError:Неизвестен модификатор:$pushAll във възел js