本教程演示了如何对文档大量中的字段索引和运行MongoDB搜索查询,即使文档大量本身是嵌套的。要启用对这些字段的查询,请将文档字段索引为 embeddedDocuments 类型。
本页面上的教程演示了如何对以下类型数组中的字段进行查询:
文档数组。
嵌套在文档中的文档数组。
文档数组中的文档数组。
在开始之前,请确保您的集群满足先决条件中描述的要求。
为了演示如何对嵌入式文档运行查询,本教程将指导您完成以下步骤:
在集群中创建名为
schools的示例集合,其中包含嵌入式文档。使用在以下路径配置的embeddedDocuments字段设置MongoDB搜索索引:
teachers字段teachers.classes字段clubs.sports字段
针对嵌入式文档字段运行
$searchMeta查询以获取计数。
关于集合
schools示例集合包含三个文档。每个文档包含学校的 name 和 mascot、每位教师的“名”和 last、他们任教的 classes,包括 subject 和 grade,以及各种clubs 可用。
关于索引
此集合的索引指定了以下数组中的文档:
关于查询
该示例查询Atlas Search schools 集合中的嵌入式文档。 查询使用以下管道阶段:
$search搜索集合。$project以在集合中包含和排除字段,并在结果中添加名为score的字段。 对于启用突出显示的查询,$project阶段还添加了一个名为highlights的新字段,其中包含突出显示信息。
这些教程演示了以下查询:
该查询演示了针对文档数组内部字段的搜索。
它在 teachers 路径中搜索名字为 John 的教师,并为姓氏为 Smith 的教师指定首选项。它还启用对 last 名称字段的突出显示。
该查询演示了针对嵌套在文档中的文档数组内的字段的搜索。
它搜索的是那些拥有体育社团的学校,而这些社团为学生提供了在 clubs.sports 路径上参加 dodgeball 或 frisbee 比赛的机会。
此查询演示了一个复合查询,用于搜索以下数组中的字段:
文档数组。
嵌套在文档数组中的文档数组。
它会搜索在 teachers.classes 路径上有教师教授 12th 年级 science 课程的学校,优先选择有姓氏为 Smith 的教师教授该课程的学校。它还能高亮显示嵌套在 teachers 文档数组中的classes 文档数组内的subject 字段。
注意
您的集群的教程还包括一个 $searchMeta 查询,用于统计各年级开课学校的数量。
对嵌入式文档运行查询
本教程演示了针对嵌入式文档中的字段的MongoDB搜索查询示例。要学习;了解有关这些查询的更多信息,请参阅关于本教程。