问题标签 [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.

0 投票
1 回答
149 浏览

postgresql - 从 Postgres ltree 路径获取直接子节点

ltree假设路径总是从根开始,如何从 Postgres中的类型中的给定路径获取直接子级?例如,如果给定的路径是A.B,列名ltreepath,那么我能想到的最好的方法是:

SELECT distinct(subpath(path, (SELECT distinct(nlevel('A.B'))), 1)) FROM test_ltree WHERE path ~ 'A.B.*{1,}';';

编辑:我只想返回孩子,没有父母在路上。

0 投票
1 回答
36 浏览

sql - 带有查询变量的 Postgres ltree

我在 psql 中使用变量,例如:\set user_id 10;

当我想在查询中使用这个变量时select * from users where user_id = :user_id;- 没关系

但是当我将它用于 ltree 列时,我有问题select * from accounts where customer_id <@ :user_id吗?

你能帮助我吗?

0 投票
1 回答
15 浏览

postgresql - 无法使用“gist_ltree_ops(siglen=100)”在 EF Core 代码优先方法中设置签名强度

我正在使用 EF Core 代码优先方法并尝试使用以下代码段配置列类型 ltree 的签名强度。

这只是创建一个默认签名长度为 8 个字节的索引。我想通过明确指定长度来覆盖这个签名长度,就像我们在 postgres 查询编辑器中所做的那样

实现这一目标的任何指示都将大有帮助。

我正在使用 posgres 版本 14.0、EF Core 6 rc、npgsql 6 rc。

0 投票
0 回答
27 浏览

postgresql - 如何使用 hasura 突变操作 ltree 节点?

需要根据字段用新值更新字段。例如:

如何对 hasura 做同样的事情?需要为移动分支的每个子节点获取一个新的 ltree 路径并更新它们:

https://dzone.com/articles/manipulating-trees-using-sql-and-the-postgres-ltre

0 投票
1 回答
29 浏览

python-3.x - sqlalchemy / ltree 更新请求结果与预期不同

我在session.execute查询期间遇到了 sqlalchemy 的一些问题。

我实现了一个用 sqlalchemy 更新 ltree 节点的函数,灵感来自这篇文章: https ://dzone.com/articles/manipulating-trees-using-sql-and-the-postgres-ltre

我正在尝试将分支从 1 个父级移到 0 个。

我实现了set_ltree_path应该涵盖所有场景的功能

并用 调用它db objectNone因为父节点将是根节点,而db session. 最后,父母将有正确的路径,但孩子,而不是预期的parent.child路径有一个parent.parent.child路径。当我尝试将更新请求发送到 postgres 时,一切正常。我是 sql alchemy 的新用户,也许我忘记了什么?先感谢您 :-)

0 投票
2 回答
34 浏览

postgresql - Postgres ltree 不使用 Gist 索引 为什么?

结果:

hierarchy_table 上的 Seq Scan(成本=0.00..1.10 行=1 宽度=36)(实际时间=0.009..0.011 行=3 循环=1)

http://sqlfiddle.com/#!17/6e363/2

0 投票
1 回答
25 浏览

postgresql - 获取深度的所有 ltree 节点

我有一个 ltree 列,其中包含一棵深度为 3 的树。我正在尝试编写一个查询,该查询可以选择特定深度的所有子级(级别 1 = 获取所有父级,2 = 获取所有子级,3 = 获取所有孙子级)。我知道这很简单n_level

我有 200,000 条虚拟记录,而且速度非常快(约 170 毫秒)。但是,此查询使用顺序扫描。我认为最好以利用 GiST 索引支持的 ltree 运算符的方式编写它。令人沮丧的是,我似乎无法将我的大脑包裹在他们身上,而且我还没有在 SO 或 DBA 上找到类似的问题(除了这个关于寻找叶子的问题)

任何建议表示赞赏!

0 投票
1 回答
41 浏览

sql - 根据 ltree 中最长的唯一路径从 postgres 数据库中获取唯一行

我正在处理数据库中的 postgres,我们在下表中列出了用于存储层次结构 ID的PATH列。ltree

表(位置)-

尝试以下查询 -

结果 -

在这里你可以看到我们在表中有多个层次结构,但我想要唯一的层次结构直到叶子,例如

预期结果应该是 -

因为 A>B>C 也属于同一个保护伞。所以最终表的预期结果——

管理父子关系的表与显示用户层次结构的路径相同。

如果还有其他需要,请告诉我。