添加查询字段
查找字段允许您创建图表,以便将同一数据库中多个集合的数据联接在一起。查找字段从第二个集合中引入文档,该集合的值对应于图表主数据源中的字段。
查找字段在以下情况中非常有用:利用集合之间的父/子关系和主键/外键关系,或者一个集合中的字段引用另一个集合中的字段的任何情况。查找字段使用 $lookup 从远程集合中检索匹配文档。
创建新的查找字段
您可以从图表数据源中的任何字段创建查找字段,前提是该字段不是嵌入式对象,并且包含与另一个集合中的字段相匹配的数据。 远程集合必须是:
现有的 Charts 数据源。
与本地集合属于同一数据库的一部分。
注意
还可以将本地集合用作查找字段源。
要添加查找字段,将鼠标移至现有字段上,然后点击字段名右侧的 ellipsis (...)(省略号 (...))。从下拉菜单中选择 Lookup field(查找字段)。此时将显示一个模式窗口:
从下拉菜单中选择所需的集合和字段。远程字段中必须有至少一个文档的数据与本地字段匹配,否则查找字段将为空。
您可以选择从外部集合中返回所有匹配的文档,也可以仅返回第一个匹配的文档。对于一对多关系,例如父/子关系和主键关系,建议返回所有匹配文档。对于一对一和多对一关系,例如参考数据代码,建议仅返回第一个文档。如果只想返回第一个匹配的文档,请选中 Return only first matching document 单选按钮。
图表会建议新字段的名称,但如果您愿意,也可以输入您选择的名称。单击 Save(保存)以创建新字段。
新字段将显示一个 binoculars 图标,表示它是查找字段。
重要
确保您用作查询字段的任何字段都有相应的索引。对大型集合中未编制索引的字段执行查找操作可能会导致严重的性能问题或超时。
要从字段面板中删除查找字段,将鼠标移至查找字段上,然后点击字段名右侧的 ellipsis (...)(省略号 (...))。从下拉菜单中选择 Remove field(删除字段)。
例子
以下示例使用两个数据源,一个称为 product_catalog
,一个称为 orders
。
product_catalog
集合包含以下文档:
{ "_id" : 76234, "item" : "21 inch monitor" } { "_id" : 38921, "item" : "USB C cable" } { "_id" : 21167, "item" : "keyboard" } { "_id" : 90252, "item" : "60 GB external hard drive" }
orders
集合包含以下文档:
{ "_id" : 1, "sku": 38921, "quantity": 50 } { "_id" : 2, "sku": 21167, "quantity": 75 } { "_id" : 3, "sku": 76234, "quantity": 15 } { "_id" : 4, "sku": 21167, "quantity": 20 }
orders
集合中的记录使用 sku
字段引用 product_catalog
集合中的 _id
字段。
目标是创建一个柱形图,显示订购项目的数量。下图使用 orders
作为其数据源。查找字段 sku_lookup_product_catalog
是根据 orders.sku
字段创建的。它使用 product_catalog
集合作为其远程数据源,并使用 product_catalog._id
作为其远程字段。
该图表使用 product_catalog.item
作为 X 轴,使用 orders.quantity
作为 Y 轴。