gpt4 book ai didi

mongodb - 从 MongodbC# 读取特定字段值

转载 作者:行者123 更新时间:2023-12-04 01:40:50 25 4
gpt4 key购买 nike

最近我开始使用 MongoDB。我必须使用 mongodb C# 驱动程序从 mongodb 读取特定字段(列)。这意味着无论值如何,我都必须读取特定字段。我只需要指定字段。我的数据中有非结构化数据db.so 我的项目中没有模型类。

我使用 Getcollection<> 从 C# 库中读取了 Collection。然后在我坚持完成这项任务之后。

我怎样才能实现?

最佳答案

有几种方法可以实现这一点,具体取决于您的非结构化数据是在编译时还是运行时已知。

对于编译类型,您可以对数据的投影进行建模并使用投影构建器来指定您的投影应该如何工作

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

这将导致返回带有 Id 和 Age 的异常类型。

但是,如果我们在编译时不知道数据并且在运行时基于魔术字符串的字段,那么您需要传入 BsonDocumentGetCollection方法:
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();

关于mongodb - 从 MongodbC# 读取特定字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46986883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com