sql >> Database teknologi >  >> NoSQL >> MongoDB

Læs specifikke feltværdier fra MongodbC#

Der er et par måder, du kan opnå dette på, afhængigt af om dine ustrukturerede data er kendt på kompileringstidspunktet eller kørselstidspunktet.

For kompileringstype kan du modellere din projektion af dataene og bruge projektionsbyggeren til at specificere, hvordan din projektion skal fungere

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

Ovenfor har vi angivet returtypen som det generiske argument, men hvis vi udelader dette, vil vi blive returneret et BsonDocument hvilket kan være nyttigt afhængigt af dit brug

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

Vi kan også opnå det samme resultat ved at bruge linq udtryk:

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

Dette vil resultere i at returnere en anonym type med et id og en alder.

Men hvis vi ikke kender dataene på kompileringstidspunktet og baserer felterne med magiske strenge under kørsel, skal du indsende BsonDocument til GetCollection metode:

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

Du vil nu være i stand til at gøre begge de ovennævnte metoder til at projicere bson-dokumentet, men det vil være pr. felt.

Jeg vil dog råde dig til at prøve at bruge projektbyggere, da det vil gøre dit liv lidt lettere:

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

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



  1. løser java resultat 137

  2. Pymongo-fejl for ArrayFilters til at opdatere flere underdokumenter

  3. Sails.js opgraderer til v1 omvendt store og små forespørgsler

  4. Hvordan udfylder man indlejrede enheder i mongoose?