gpt4 book ai didi

node.js - Node 中的 postgres+jsonb 使用什么库?

转载 作者:搜寻专家 更新时间:2023-11-01 00:36:29 25 4
gpt4 key购买 nike

我想对包含对象数组的 jsonb/文档进行更复杂的查询。有没有人会为 Node 推荐任何库?我正在使用 pg 但我想做更高级的查询,例如选择文档,其中文档具有一个数组,其中的对象具有特定的键/值。如果没有任何库可以做到这一点,有谁知道我如何在 psql 中使用 json 函数/等来做到这一点?或指向我可以学习此高级查询的书籍/资源?

最佳答案

如果您需要做真正复杂的事情,无论如何您都将编写 SQL。但对于涉及使用 JSONB 字段的基本查询 Massive (完全公开,这是我的项目)您已经了解了,执行手写准备好的语句就像其他任何事情一样容易,因为脚本已加载到 API 中。

不幸的是,搜索嵌入式数组属于“非常复杂”的类别,但是如果您知道元素的位置,则可以使用 Massive 非常简单地完成此操作:

await db.mytable.find({
'somejson.arrayfield[0].key': 'value'
});

这将返回 mytable 中的所有记录,其中 somejson 列有一个 arrayfield 数组,其中的第一个元素包含一个 “键”:“值” 对。

要搜索,请查看 Postgres docs .您遇到的具体问题需要对 jsonb_array_elements 函数进行横向连接,如下所示:

SELECT somejson
FROM mytable
JOIN LATERAL jsonb_array_elements(mytable.somejson->'arrayfield') AS elements
ON TRUE
WHERE elements->>'key' = $1;

使用 Massive,您可以将此查询放在应用程序/db 目录中的脚本中,并以 db.myScriptName('value') 运行它。您也可以使用文件夹对相似的脚本进行分组。

关于node.js - Node 中的 postgres+jsonb 使用什么库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49920845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com