问题标签 [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[]
当我使用ltreefrom时,我在 PHP 中遇到问题PostgreSQL。我在 SQL 中执行此操作:
我在 phpmyadmin 中运行查询,它工作正常,但是当我复制和粘贴时,在 PHP 中它不起作用。我做了一些研究,发现在 PHP 中我需要"<@" and "@>" for "OPERATOR(public.<)" and "OPERATOR(public.>)"分别替换。
我在 php 中使用简单的 ltree 查询对其进行测试,例如:
它工作正常,但问题是在我想要执行的实际查询中,我在左侧有ltreean 在另一侧 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 服务器端?真的在寻找想法!