postgresql 使用JSON参数绑定属性

6mzjoqzu  于 2023-06-22  发布在  PostgreSQL
关注(0)|答案(2)|浏览(153)

我正在研究一个处理动态特性的系统。
如果我想创建一个顶点,我可以在此之前这样做:

select * from ag_catalog.cypher('people',$$ create (nyk:person{name:'nyk'}) return nyk $$) as (v ag_catalog.agtype);

但是现在,我不知道属性,属性是用户作为json对象给出的。属性可能是{name:'asdf'}{name:'asdf', age:25}{name:'asdf', work:'programmer'} ....,我不知道会得到什么属性。
在使用delete、update或get方法时也会出现同样的问题。那该怎么办呢?我可以用json参数绑定属性吗?

ohtdti5x

ohtdti5x1#

以后可以使用SET子句插入属性。假设{name: 'John Doe'}是用户提供的JSON,下面的代码演示了它的用法:

SELECT * FROM cypher('test', $$
  CREATE (:Person)                   
$$) AS (res agtype);                      
 res 
-----
(0 rows)

SELECT * FROM cypher('test', $$
  MATCH (n:Person)
  SET n = {name: 'John Doe'} 
  RETURN n                
$$) AS (res agtype);
                                          res                                   
       
-----------------------------------------------------------------------------------------
 {"id": 1407374883553281, "label": "Person", "properties": {"name": "John Doe"}}::vertex
(1 row)

如果打算合并用户输入,则需要使用AGE可用的驱动程序之一,例如Python驱动程序。

oxalkeyp

oxalkeyp2#

您可以使用任何驱动程序支持从用户读取数据,然后根据属性分配读取的数据。您可以在github查看不同的驱动程序支持。一旦数据被读取,则可以相应地存储数据。如下所示

SELECT * FROM cypher('test', $$
  MATCH (s:Persons)
  SET s = {name: 'Talha'} 
  RETURN s                
$$) AS (res agtype);

相关问题