对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

指定要返回的字段

在本指南中,您可以了解如何使用投影指定从读取操作中返回哪些字段。 投影是指定 MongoDB 从查询中返回哪些字段的文档。

本指南中的示例使用来自 Atlas 示例数据集sample_restaurants.restaurants 集合。要了解如何创建免费的 MongoDB Atlas 集群并加载示例数据集,请参阅快速入门

您可以使用投影来指定要在返回文档中包含哪些字段,或指定要排除哪些字段。

在指定要包含在投影中的某些字段时,会隐式排除所有其他字段(默认包含的_id字段除外)。 除非要排除_id字段,否则不能在单个投影中组合包含和排除语句。

要从返回的文档删除_id字段,您必须明确将其排除。

要指定结果中包含的字段,请将 Project() 方法链接到 Find() 方法。 调用 Project() 方法时,您必须将投影定义作为参数传入。 您可以通过使用 Builders<T>.Projection.Include() 方法并将要包含的字段名称作为参数传入来构造投影定义。 可以链接此方法以在投影中包含多个字段。

以下示例使用 Find() 方法查找 name字段值为 "Emerald Pub" 的所有餐厅。 然后,代码调用 Project() 方法,指示查找操作在结果中包含 namecuisine 字段:

var filter = Builders<BsonDocument>.Filter.Eq("name", "Emerald Pub");
var projection = Builders<BsonDocument>.Projection
.Include("name")
.Include("cuisine");
var results = collection.Find(filter).Project(projection).ToList();
foreach (var result in results)
{
Console.WriteLine(result.ToJson());
}

在指定要包含的字段时,您还可以从返回的文档中排除_id字段。

以下示例运行与上一示例相同的查询,但从投影中排除_id字段:

var filter = Builders<BsonDocument>.Filter.Eq("name", "Emerald Pub");
var projection = Builders<BsonDocument>.Projection
.Include("name")
.Include("cuisine")
.Exclude("_id");
var results = collection.Find(filter).Project(projection).ToList();
foreach (var result in results)
{
Console.WriteLine(result.ToJson());
}

要指定要从结果中排除的字段,请将 Project() 方法链接到 Find() 方法。 您可以使用 Builders<T>.Projection.Exclude() 方法并传入要排除的字段名称作为参数,以排除投影中的字段。 可以链接此方法以排除投影中的多个字段。

以下示例使用 Find() 方法查找 name字段值为 "Emerald Pub" 的所有餐厅。 然后,它使用投影从返回的文档中排除 cuisine字段:

var filter = Builders<BsonDocument>.Filter.Eq("name", "Emerald Pub");
var projection = Builders<BsonDocument>.Projection
.Exclude("cuisine");
var results = collection.Find(filter).Project(projection).ToList();
foreach (var result in results)
{
Console.WriteLine(result.ToJson());
}

要学习;了解有关投影的更多信息,请参阅MongoDB Server手册中的“项目字段”指南。

要学习;了解有关本指南中讨论的任何函数或类型的更多信息,请参阅以下API文档: