问题标签 [ltree]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
postgresql - Postgres - 将文本转换为 ltree
我是 postgres 的新手,我希望将 ltree 用于分层数据结构。
我在 varchar 列中有数据和 ltree 结构(即 domain.class.sublass),并且需要将 ltree 结构转换为具有正确 ltree 数据类型的另一列。
我已将 text2ltree 确定为可能管理此问题的最佳方法,但即使在阅读 ltree 文档和 ltree 函数信息之后也没有取得太大进展
- https://www.postgresql.org/docs/9.1/static/ltree.html
- https://www.postgresql.org/docs/9.4/static/functions-formatting.html
我尝试了以下的许多组合
但收到以下错误:
我还尝试了以下方法并收到相同的错误:
如何将 ltree 层次结构从 varchar 列转换为具有 ltree 数据类型的列?
谢谢!
sql - Postgres ltree 模块,使用所有子相关路径更新节点的 id
我有以下简单的表格:
假设我将一些数据放到表格中:
使树看起来像:
现在我想将 id 重命名A
为,比方说,X
这样树
桌子看起来像
有人可以给一个提示 - 这可能与单个查询有关吗?
将不胜感激任何帮助,谢谢
sql - 使用 ltree、json 等 postgres 数据类型是否与 NoSQL 有关?
当我在 PostgreSQL 中设计一个表时,我计划使用 ltree 或 path 数据类型来实现我的功能。但是团队成员被告知,如果我们使用 ltree,那么我们的整个表设计将变成 NoSQL 格式。
这是真的吗?
如果是,那么我如何才能以 SQL 格式实现这种 ltree 设计?如果否,请您指导我理解这一点吗?
postgresql - PostgreSQL:快速检查一个 LTREE [] <@ LTREE[] 的所有元素
我有以下表格(简化):
对于每个项目,都有一个该项目所属的组列表。组由其完整路径表示。最多可能有 10M 个项目,每个项目属于大约 20 个组。
我需要设计以下查询。给定 (a) 一个“父”组和 (b) 最多 10 个附加组的列表,找到“父”组的直接后代,它们的子树中至少有一个项目包含在搜索条件。
例如,给定父组“NorthAmerica.USA”和其他组 [“CandyLovers.ChocolateLovers”、“Athletes.Footballers”],如果存在“George”这样的项目,则“NorthAmerica.USA.CA”是一个结果那是在像[“NorthAmerica.USA.CA.LosAngeles”,“Athletes.Footballers”,“CandyLovers.ChocolateLovers.ChocolateDonutLovers”这样的组中
我尝试了几种不同的方法来编写查询,但它们的扩展性很差:需要几分钟才能在搜索条件中返回一组 1M 项和 3-4 条路径的结果。例如:
结果如下:
我可以根据需要更改数据模型以优化此查询。我正在运行 PostgreSQL v9.5
非常感谢!对不起一个混乱的问题。
javascript - Knex:嵌套原始查询,转义“?” 特点
我正在尝试将 Postgresql LTREE 与 knex 一起使用。
为了管理它,我必须使用 knex 的原始查询,因为显然 LTREE 在 knex 中不是本机的(它特定于 postgresql)
postgresql 和 LTREE 中的操作符是 character ?
,在 knex.raw 中,?
character 是用来绑定值的(众所周知),所以存在冲突。
再一次,这不是问题,因为我们可以使用它\\?
来防止替换 knex?
在原始查询中找到 a 的值。
我的问题是我需要对包含带有\\?
字符的 knex.raw 的查询执行“SELECT EXISTS”,并且在 knex 中我使用 : knex.raw(myQuery).wrap('SELECT EXISTS(', ')')
来执行我的 SELECT EXISTS。所以我嵌套了原始查询,一个用于选择存在,一个myQuery
用于 postgresql ltree 条件。
在执行查询的过程中,第一个 knex.raw 将原来的\\?
转换成 => ?
是正常的,第二个 knex.raw 会做同样的工作,他会找到一个?
并且想要绑定数据但我不给他数据所以 knex 抛出一个错误!
一个解决方案是用这个\\\\?
代替\\?
,第一个 knex.raw 将转换查询,\\?
第二个 knex.raw 将转换最终查询,?
这是我在 postgresql 中想要的(不尝试进行任何绑定)
这很棒!但是myQuery
是由一个通用函数生成的,该函数在带有 SELECT EXISTS 的上下文中调用,但也在没有 SELECT EXISTS 的上下文中调用,如果我\\\\?
只使用一个 knex.raw(没有 SELECT EXISTS 的上下文),它这次也会由 postgresql 引发错误(因为 postgresql 无法识别\\?
)。
是否可以通过所有 knex.raw 转义 `?` 字符?
一个糟糕的解决方案(但一个可行的解决方案)是为生成查询的函数设置一个参数,以精确判断它是否是嵌套原始查询的上下文。
编辑 :
这是我们可以拥有的代码的简单示例:
这失败了,因为第一个 knex.raw 删除了第一个 double并且 .wrap\\
的\\?
第二个 knex.raw 将等待绑定
php - 未定义函数:7 错误:运算符不存在:public.ltree public.< public.ltree[]
当我使用ltree
from时,我在 PHP 中遇到问题PostgreSQL
。我在 SQL 中执行此操作:
我在 phpmyadmin 中运行查询,它工作正常,但是当我复制和粘贴时,在 PHP 中它不起作用。我做了一些研究,发现在 PHP 中我需要"<@" and "@>" for "OPERATOR(public.<)" and "OPERATOR(public.>)"
分别替换。
我在 php 中使用简单的 ltree 查询对其进行测试,例如:
它工作正常,但问题是在我想要执行的实际查询中,我在左侧有ltree
an 在另一侧 an ltree[]
,当我使用“OPERATOR(public.<)”时,它给了我这个错误:
“未定义函数:7 错误:运算符不存在:public.ltree public.<public.ltree[] ”
这就是我正在尝试做的...
任何建议.... tks。对不起,如果我的英语不好。
java - 使用 ltree 本机命名查询休眠
我正在尝试运行包含ltree
函数和运算符的 PostgreSQL 本机查询。
这是定义:
像这样调用:
结果是错误ERROR: operator does not exist: ltree ~ character varying
。
当我尝试直接针对数据库运行查询时,它运行正常:
从错误中可以明显看出 hibernate(?) 不喜欢 th 运算符右侧的类型~
,但是正如您所看到的,我在后面的查询中使用了该字符串并且工作正常。
那么我需要对休眠查询做什么才能成功运行查询呢?
编辑:当我替换我时okm_path ~ :pathLike
,"where okm_path ~ '*._root_.*' "
我会得到:
org.postgresql.util.PSQLException: ERROR: syntax error at position 0
错误
休眠:5.2.9.Final
PostgreSQL:9.2.23
postgresql - 使用主键和外键构建 ltree
我对 postgres 很陌生,尤其是对 ltree 很陌生。在网上搜索 ltree 给我带来了通过链接字符构建树的示例。但我想使用主键和外键。
因此我建立了下表:
我想要 1.3.5 而不是 ABG。在线示例中的根添加如下:
而不是 AI 想要拥有主键(当时我不知道)。有没有办法做到这一点?
添加孩子时,我遇到了同样的问题:
我知道父母的 id,但不知道我想附加的孩子的 id。
有没有办法做到这一点,或者我完全偏离了轨道?
非常感谢!
ruby-on-rails - 在层次结构中获取孩子、孙子
我正在使用名为 ltree_hierarchy( https://github.com/cfabianski/ltree_hierarchy ) 的带有 rails 和 gem 的分层数据模型。因为每个节点都会有一个父 ID(它是当前节点的直接父节点)。
层次结构是使用 postgres 的 ltree 扩展来实现的。并且在 gem ltree_hierarchy 中,将保存父级和路径。
我可以使用节点的 parent_id 获取兄弟、父和子。就像是,
是否有任何建议可以在单个查询中获取节点的子节点和孙节点?
json - PostgreSQL Ltree 转 JSON
我一直在试验 PostgreSQL 的 Ltree 扩展。我想用它来存储分层的待办事项列表数据(即带有子列表的列表)。它工作得很好,但是在花费了相当长的时间之后,我仍然找不到从数据库中以分层 JSON 格式检索信息的好方法。这是我想要实现的示例:
从这里,到下面的 json 输出:
有没有什么巧妙的方法可以做到这一点,也许是 Python 服务器端?真的在寻找想法!