如何使用C# NuGet包从MongoDB所有记录中选取单个字段
实现SQL
SELECT name FROM student 的MongoDB C#操作 要实现不带WHERE条件的查询,只需要把原示例中的filter替换为空过滤条件即可,空过滤会匹配集合中的所有文档,对应SQL里无WHERE子句的情况。
基于BsonDocument的实现代码
// 定义投影:只包含name字段,排除默认的_id字段 var projection = Builders<BsonDocument>.Projection.Include("name").Exclude("_id"); // 使用空过滤条件查询所有文档,再应用投影 var result = collection.Find<BsonDocument>(FilterDefinition<BsonDocument>.Empty) .Project(projection) .ToList();
也可以通过Builders生成空过滤,写法等价:
var emptyFilter = Builders<BsonDocument>.Filter.Empty; var result = collection.Find<BsonDocument>(emptyFilter) .Project(projection) .ToList();
(可选)基于强类型实体类的实现
如果项目中使用了强类型Student实体类(比如包含Name属性),代码会更直观:
// 定义投影,仅选择Name属性 var projection = Builders<Student>.Projection.Include(s => s.Name).Exclude(s => s.Id); // 查询所有学生并投影到指定字段 var result = collection.Find<Student>(FilterDefinition<Student>.Empty) .Project(projection) .ToList();
执行后,返回结果完全对应SQL语句SELECT name FROM student的效果:获取student集合中所有文档的name字段,且不包含默认的_id字段。
内容的提问来源于stack exchange,提问作者Mr Giggles
相关产品推荐
相关产品推荐

