如何在Apache Age中创建顶点时添加嵌套属性?
在Apache Age中实现节点的嵌套属性(类似Python嵌套字典)
Apache Age 基于 PostgreSQL,天然支持用 JSONB 类型存储嵌套结构,完全可以实现类似 Python 嵌套字典的效果。以下是具体操作方法:
创建带嵌套属性的节点
直接在节点属性中写入嵌套键值对即可,Age 会自动将其解析为 JSONB 类型存储:
CREATE (u:User { name: 'Bob', age: 28, details: { work: { company: 'Tech Corp', position: 'Software Engineer', years: 3 }, hobbies: ['hiking', 'reading'], contact: { email: 'bob@example.com', social: { twitter: '@bobtech', github: 'bobgithub' } } } }) RETURN u;
查询嵌套属性
通过.直接访问深层嵌套属性,和 Python 字典的访问逻辑一致:
-- 获取Bob的公司名称 MATCH (u:User {name: 'Bob'}) RETURN u.details.work.company AS company; -- 获取Bob的Twitter账号 MATCH (u:User {name: 'Bob'}) RETURN u.details.contact.social.twitter AS twitter;
更新嵌套属性
修改浅层嵌套属性
MATCH (u:User {name: 'Bob'}) SET u.details.work.position = 'Senior Software Engineer' RETURN u;
修改深层嵌套属性(用PostgreSQL的jsonb_set函数)
针对多层嵌套的属性,使用jsonb_set函数更稳妥:
MATCH (u:User {name: 'Bob'}) SET u.details = jsonb_set(u.details, '{contact,social,github}', '"bob_github_new"') RETURN u;
这里的'{contact,social,github}'是路径数组,指定要修改的深层属性位置,最后一个参数为新值(字符串需用双引号包裹)。
内容的提问来源于stack exchange,提问作者Moontasir Mahmood
相关产品推荐
相关产品推荐

