问题标签 [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 路径获取直接子节点
ltree
假设路径总是从根开始,如何从 Postgres中的类型中的给定路径获取直接子级?例如,如果给定的路径是A.B
,列名ltree
是path
,那么我能想到的最好的方法是:
SELECT distinct(subpath(path, (SELECT distinct(nlevel('A.B'))), 1)) FROM test_ltree WHERE path ~ 'A.B.*{1,}';';
编辑:我只想返回孩子,没有父母在路上。
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
吗?
你能帮助我吗?
postgresql - 无法使用“gist_ltree_ops(siglen=100)”在 EF Core 代码优先方法中设置签名强度
我正在使用 EF Core 代码优先方法并尝试使用以下代码段配置列类型 ltree 的签名强度。
这只是创建一个默认签名长度为 8 个字节的索引。我想通过明确指定长度来覆盖这个签名长度,就像我们在 postgres 查询编辑器中所做的那样
实现这一目标的任何指示都将大有帮助。
我正在使用 posgres 版本 14.0、EF Core 6 rc、npgsql 6 rc。
postgresql - 如何使用 hasura 突变操作 ltree 节点?
需要根据字段用新值更新字段。例如:
如何对 hasura 做同样的事情?需要为移动分支的每个子节点获取一个新的 ltree 路径并更新它们:
https://dzone.com/articles/manipulating-trees-using-sql-and-the-postgres-ltre
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 object
,None
因为父节点将是根节点,而db session
. 最后,父母将有正确的路径,但孩子,而不是预期的parent.child
路径有一个parent.parent.child
路径。当我尝试将更新请求发送到 postgres 时,一切正常。我是 sql alchemy 的新用户,也许我忘记了什么?先感谢您 :-)
postgresql - Postgres ltree 不使用 Gist 索引 为什么?
结果:
hierarchy_table 上的 Seq Scan(成本=0.00..1.10 行=1 宽度=36)(实际时间=0.009..0.011 行=3 循环=1)
postgresql - 获取深度的所有 ltree 节点
我有一个 ltree 列,其中包含一棵深度为 3 的树。我正在尝试编写一个查询,该查询可以选择特定深度的所有子级(级别 1 = 获取所有父级,2 = 获取所有子级,3 = 获取所有孙子级)。我知道这很简单n_level
:
我有 200,000 条虚拟记录,而且速度非常快(约 170 毫秒)。但是,此查询使用顺序扫描。我认为最好以利用 GiST 索引支持的 ltree 运算符的方式编写它。令人沮丧的是,我似乎无法将我的大脑包裹在他们身上,而且我还没有在 SO 或 DBA 上找到类似的问题(除了这个关于寻找叶子的问题)
任何建议表示赞赏!
sql - 根据 ltree 中最长的唯一路径从 postgres 数据库中获取唯一行
我正在处理数据库中的 postgres,我们在下表中列出了用于存储层次结构 ID的PATH
列。ltree
表(位置)-
尝试以下查询 -
结果 -
在这里你可以看到我们在表中有多个层次结构,但我想要唯一的层次结构直到叶子,例如
预期结果应该是 -
因为 A>B>C 也属于同一个保护伞。所以最终表的预期结果——
管理父子关系的表与显示用户层次结构的路径相同。
如果还有其他需要,请告诉我。