从 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}'

您应该也可以将其用作索引。