sql >> Database >  >> NoSQL >> MongoDB

Lees specifieke veldwaarden van MongodbC#

Er zijn een paar manieren waarop u dit kunt bereiken, afhankelijk van of uw ongestructureerde gegevens bekend zijn tijdens het compileren of uitvoeren.

Voor het compileertype kunt u uw projectie van de gegevens modelleren en de projectiebouwer gebruiken om te specificeren hoe uw projectie zou moeten werken

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

Hierboven hebben we het retourtype gespecificeerd als het generieke argument, maar als we dit weglaten, krijgen we een BsonDocument terug wat handig kan zijn, afhankelijk van uw gebruik

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

We kunnen hetzelfde resultaat ook bereiken door de linq-expressie te gebruiken:

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

Dit zal resulteren in het retourneren van een anoniem type met een Id en Leeftijd.

Als we de gegevens echter niet kennen tijdens het compileren en de velden van magische tekenreeksen tijdens runtime baseren, moet u BsonDocument doorgeven naar de GetCollection methode:

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

U kunt nu beide bovenstaande methoden gebruiken om het bson-document te projecteren, maar dit is per veld.

Ik raad u echter aan om de projectbouwers te gebruiken, omdat dit uw leven een beetje gemakkelijker zal maken:

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

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



  1. Enums in MongoDB

  2. MongoDb-filterarray

  3. Mongo en vind altijd beperkt tot 100 met geogegevens

  4. make mislukt bij het installeren van mongo php-stuurprogramma op Centos 6