通过 BY 子句查询文档 ID - 亚马逊 Quantum Ledger 数据库(亚马逊QLDB)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

通过 BY 子句查询文档 ID

重要

终止支持通知:现有客户可以在2025年7月31日终止支持QLDB之前使用亚马逊。有关更多详细信息,请参阅将亚马逊QLDB账本迁移到亚马逊 Aurora Postgr SQL e。

虽然您可以定义作为唯一标识符的字段(例如车辆VIN),但文档的真正唯一标识符是id元数据字段,如中所述插入文档。因此,您可以使用 id 字段在表之间创建关系。

文档 id 字段只能在已提交的视图中直接访问,但您也可使用BY子句将其投影到默认用户视图中。有关示例,请参阅以下查询和结果。

SELECT r_id, r.VIN, r.LicensePlateNumber, r.State, r.City, r.Owners FROM VehicleRegistration AS r BY r_id WHERE r_id = '3Qv67yjXEwB9SjmvkuG6Cp'
{ r_id: "3Qv67yjXEwB9SjmvkuG6Cp", VIN: "1N4AL11D75C109151", LicensePlateNumber: "LEWISR261LL", State: "WA", City: "Seattle", Owners: { PrimaryOwner: { PersonId: "294jJ3YUoH1IEEm8GSabOs" }, SecondaryOwners: [{ PersonId: "5Ufgdlnj06gF5CWcOIu64s" }] } }

在此查询中,r_id是用户定义别名,在FROM子句中使用BY关键字声明。此 r_id 别名绑定至查询结果集中每个文档的 id 元数据字段。你可以在SELECT 子句中使用这个别名,也可以在用户视图的查询 WHERE 子句中使用这个别名。

但是,若要访问其他元数据属性,必须查询已提交视图。

使用证件 ID 加入

假设您正在使用一个表的id文档作为另一个表用户定义字段中的外键。您可以使用 BY 子句为这两个字段上的两个表编写内部联接查询(与上一主题中的加入已提交和用户视图类似)。

以下示例分别在它们的 PersonId 和文档 id 字段上连接两个名为 DriversLicensePerson 的表,对后者使用 BY 子句。

SELECT * FROM DriversLicense AS d INNER JOIN Person AS p BY pid ON d.PersonId = pid WHERE pid = '1CWScY2qHYI9G88C2SjvtH'

要了解如何对表格中的文档更改,请继续 更新和删除文档