Docs 菜单

Docs 主页开发应用程序MongoDB Manual

查询返回的项目字段

在此页面上

  • 返回匹配文档中的所有字段
  • 仅返回指定字段和 _id 字段
  • 抑制 _id 字段
  • 返回除已排除字段之外的所有字段
  • 返回嵌入式文档中的特定字段
  • 抑制嵌入式文档中的特定字段
  • 对数组中嵌入式文档的投影
  • 已返回数组中特定于项目的数组元素
  • 使用聚合表达式投影字段
  • 其他注意事项

➤ 使用右上角的 Select your language(选择语言)下拉菜单,设置以下示例的语言。


默认情况下,MongoDB 中的查询返回匹配文档中的所有字段。要限制 MongoDB 发送到应用程序的数据量,可以添加投影文档来指定或限制要返回的字段。

以下示例返回 inventory 集合中所有文档的所有字段,其中 status 等于 "A"

此操作对应于以下 SQL 语句:

SELECT * from inventory WHERE status = "A"

通过在投影文档中将<field>设置为1,投影可以显式包含多个字段。以下操作会返回与查询匹配的所有文档。 在结果集中,匹配文档中仅返回itemstatus和默认情况下的_id字段。

此操作对应于以下 SQL 语句:

SELECT _id, item, status from inventory WHERE status = "A"

您可通过在投影中将其设为 0 以便从结果中删除 _id 字段,如以下示例所示:

此操作对应于以下 SQL 语句:

SELECT item, status from inventory WHERE status = "A"

注意

_id 字段之外,您无法在投影文档中合并包含与排除声明。

您可以使用投影来排除特定字段,而不必在匹配文档中列出要返回的字段。以下示例将在匹配文档中返回除 statusinstock 字段之外的所有字段:

注意

_id 字段之外,您无法在投影文档中合并包含与排除声明。

您可以返回嵌入式文档中的特定字段。使用点符号引用嵌入式字段,并在投影文档中设为 1

以下示例将返回:

  • _id 字段(默认返回)、

  • item 字段。

  • status 字段。

  • size 文档中的 uom 字段。

uom 字段仍会嵌入在 size 文档中。

您还可以使用嵌套表单指定嵌入式字段。例如, { item: 1, status: 1, size: { uom: 1 } }

您可以隐藏嵌入式文档中的特定字段。使用点符号引用投影文档中的嵌入式字段,并设为 0

以下示例将指定一个投影来排除 size 文档内的 uom 字段。所有其他字段均会在匹配的文档中返回:

您还可以使用嵌套表单指定嵌入式字段。例如, { size: { uom: 0 } }

使用点符号来投影嵌入数组中的文档内的特定字段。

以下示例指定要返回的投影:

  • _id 字段(默认返回)、

  • item 字段。

  • status 字段。

  • 嵌入到 instock 数组中的文档内的 qty 字段。

您可以在查询投影中指定聚合表达式。通过使用聚合表达式,您可以投影新字段并修改现有字段的值。

例如,以下操作使用聚合表达式覆盖 status 字段的值,并投影新字段 areareportNumber

注意

以下示例使用 MongoDB Shell 语法。有关使用聚合进行投影的驱动程序示例,请参阅 驱动程序文档。

db.inventory.find(
{ },
{
_id: 0,
item: 1,
status: {
$switch: {
branches: [
{
case: { $eq: [ "$status", "A" ] },
then: "Available"
},
{
case: { $eq: [ "$status", "D" ] },
then: "Discontinued"
},
],
default: "No status found"
}
},
area: {
$concat: [
{ $toString: { $multiply: [ "$size.h", "$size.w" ] } },
" ",
"$size.uom"
]
},
reportNumber: { $literal: 1 }
}
)
[
{
item: 'journal',
status: 'Available',
area: '294 cm',
reportNumber: 1
},
{
item: 'planner',
status: 'Discontinued',
area: '685.5 cm',
reportNumber: 1
},
{
item: 'notebook',
status: 'Available',
area: '93.5 in',
reportNumber: 1
},
{
item: 'paper',
status: 'Discontinued',
area: '93.5 in',
reportNumber: 1
},
{
item: 'postcard',
status: 'Available',
area: '152.5 cm',
reportNumber: 1
}
]

MongoDB 对投影执行额外的限制。有关详细信息,请参阅投影限制

提示

另请参阅:

← 查询嵌入式文档数组