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

标签 mongodb mongodb-query mongodb-.net-driver mongodb-csharp-2.0

最近我开始使用 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/

相关文章:

c# - 在使用 MongoDB C# 驱动程序的 ensureIndex 之后,Id 字段映射被破坏

c# - IBsonSerializationOptions 是否已从 MongoDB 的最新 C# 驱动程序中删除?

node.js - 如何在查询中使用 $push 将数据插入子文档,而不是检索文档并将其保存回来

mongodb - 如何计算两个查询的差异?

MongoDB 查询 - 按奇数大小过滤数组

c# - MongoDB .Net 驱动 2.0 拉取(移除元素)

C# MongoDB 驱动程序——需要简单的代码来读取/查询集合

javascript - NodeJs MongoDB 更新错误

Mongodb updateMany 属性为其他属性的精确值

javascript - Mean.js 查询变量不起作用