sql >> Databáze >  >> NoSQL >> MongoDB

Číst konkrétní hodnoty polí z MongodbC#

Existuje několik způsobů, jak toho dosáhnout v závislosti na tom, zda jsou vaše nestrukturovaná data známá v době kompilace nebo za běhu.

Pro typ kompilace můžete modelovat svou projekci dat a pomocí tvůrce projekce určit, jak má vaše projekce fungovat

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

Výše jsme zadali návratový typ jako obecný argument, ale pokud jej vynecháme, vrátíme BsonDocument což může být užitečné v závislosti na vašem použití

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

Stejného výsledku můžeme dosáhnout také použitím výrazu linq:

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

Výsledkem bude vrácení neobvyklého typu s ID a věkem.

Pokud však neznáme data v době kompilace a zakládáme pole magických řetězců za běhu, budete muset předat BsonDocument do GetCollection metoda:

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

Nyní budete moci použít obě výše uvedené metody pro projektování dokumentu bson, ale bude to na bázi jednotlivých polí.

Nicméně bych vám doporučil zkusit použít Project builders, protože vám to trochu usnadní život:

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

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



  1. Využití vyrovnávací paměti ve fázi řazení přetečení překračuje interní limit

  2. Jak spustím Redis ve Windows 32bit?

  3. Porovnání výkonu používání hashů Redis vs. mnoha klíčů

  4. Vyhledávání v mongo db pomocí mongoose regex vs. text