Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 如何使用Npgsql查询某些jsonb字段_Postgresql_Entity Framework Core_Npgsql - Fatal编程技术网

Postgresql 如何使用Npgsql查询某些jsonb字段

Postgresql 如何使用Npgsql查询某些jsonb字段,postgresql,entity-framework-core,npgsql,Postgresql,Entity Framework Core,Npgsql,我正在尝试使用Postgres中的jsonb列将这样的查询映射到C对象: select item_object->'thing' FROM "Table", jsonb_array_elements("JsonColumn") with ordinality arr(item_object); 在本例中,JsonColumn包含一个JSON对象数组,每个对象都有一个“thing”字段 我看到可以使用JsonDocument或POCO在WHERE

我正在尝试使用Postgres中的jsonb列将这样的查询映射到C对象:

select item_object->'thing' 
FROM "Table", jsonb_array_elements("JsonColumn") 
with ordinality arr(item_object);
在本例中,JsonColumn包含一个JSON对象数组,每个对象都有一个“thing”字段

我看到可以使用JsonDocument或POCO在WHERE子句中映射这些Json函数,但在我的例子中,我试图限制返回多少文档,以减少反序列化的大小和数量。有没有办法在C中实现这一点,或者我需要构建定制的查询

谢谢

-编辑-

例如,我们可以在C中使用这种查询来查询特定的jsonb字段吗

DataContext.Table.Select(t => new { t.JsonColumn.thing });
深入研究json,只返回'thing'字段,而不是整个json blob

从文档中,这适用于Where子句:

var joes = context.CustomerEntries
    .Where(e => e.Customer.Name == "Joe")
    .ToList();

是的,您可以在Select中钻取JSON文档,就像在Where中一样。一般来说,后者支持的表达式也适用于前者。

请提供无需复制的内容。我想知道这是否是Npgsql提供的功能。请提供示例数据和所需的输出Hanks-是否有相关文档?它是否调用相关的Postgres JSON函数?例如,我希望生成的查询如下所示:从FeatureSpecs中选择值->thing,jsonb_array_element stypedefinitions我在计算C端的语法时遇到了问题,因此我无法运行这些查询以查看生成的Psql查询是否正确。支持的与JSON相关的翻译在文档中:。提供程序不会翻译为JSON_array_元素,因为它通常不会生成太多很有道理。。。我不太明白您在上面的顶级查询中到底想要实现什么-提供您想要获得的完整SQL可能会有所帮助或提供更多详细信息。例如,是否有一种方法可以生成一个查询,该查询只从链接文档中的Orders数组返回Price字段,以避免返回和反序列化ShippingAddress?我的结构与此类似,但我的“ShippingAddress”等价物可能相当大,对于一些性能敏感的查询,我只需要“Price”。我能够使用json_array_元素编写上面的查询来生成行,从中我可以提取一个字段来在Postgres端实现这一点,但我想知道是否有一种方法可以在EF中生成类似的内容。感谢额外的信息-不,我认为目前无法在LINQ中表达这一点。。您必须使用EF,但仍然可以使用EF来具体化结果,甚至可以在原始SQL之上组合LINQ。