从 jsonb 列按字段排序
Sort by field from jsonb column
我正在使用 npgsql 来存储有关发货的数据,table 的一部分是 jsonb 列,用于存储有关发货的一些详细信息,包括有关发货的客户的详细信息。
Table 用于显示有关发货的数据仅显示客户名称,如果通过
获取该记录
CustomerName = shipment.Metadata.RootElement.GetProperty("customer").GetProperty("customerName").ToString(),
请求是我将此列设为 sortable,因此我需要在访问数据库时按此 属性 排序。
甚至可以在 NpgSql 中实现吗?
您可以轻松地按 JSON 文档中的 属性 进行排序 - 只需在您的 OrderBy 子句中指定 属性:
_ = await ctx.Shipments
.OrderBy(s => s.Metadata.RootElement.GetProperty("customer").GetProperty("customerName").GetString())
.ToListAsync();
这会产生以下结果:
SELECT s."Id", s."Metadata"
FROM "Shipments" AS s
ORDER BY s."Metadata"#>>'{customer,customerName}'
您应该也可以将其用作索引。
我正在使用 npgsql 来存储有关发货的数据,table 的一部分是 jsonb 列,用于存储有关发货的一些详细信息,包括有关发货的客户的详细信息。
Table 用于显示有关发货的数据仅显示客户名称,如果通过
获取该记录 CustomerName = shipment.Metadata.RootElement.GetProperty("customer").GetProperty("customerName").ToString(),
请求是我将此列设为 sortable,因此我需要在访问数据库时按此 属性 排序。
甚至可以在 NpgSql 中实现吗?
您可以轻松地按 JSON 文档中的 属性 进行排序 - 只需在您的 OrderBy 子句中指定 属性:
_ = await ctx.Shipments
.OrderBy(s => s.Metadata.RootElement.GetProperty("customer").GetProperty("customerName").GetString())
.ToListAsync();
这会产生以下结果:
SELECT s."Id", s."Metadata"
FROM "Shipments" AS s
ORDER BY s."Metadata"#>>'{customer,customerName}'
您应该也可以将其用作索引。