neo4j 数组属性(属性值有多个)

1、多个属性值的设置语句

match (m:公司{名称:["test3","test2"]}) return m

 

2、多个属性的查询以及merge的使用

OPTIONAL MATCH (n:公司) where "test3" in n.名称 
WITH n
where n is null merge (m:公司{名称:["test3","test2"]})
return m

(1)判断属性是否存在:直接用 "属性值 in 节点.属性名"的形式

(2)merge和where不可以同时使用,所以,先通过match判断,再通过merge的方式创建

参考用法:

OPTIONAL MATCH (existing:TYPE) WHERE existing.propertyA = 'A' OR existing.propertyB = 'B' OR existing.propertyC = 'C'
WITH existing
WHERE existing IS NOT NULL SET existing.propertyA = 'A', existing.propertyB = 'B', existing.propertyC = 'C'
RETURN existing;

OPTIONAL MATCH (existing:TYPE) WHERE existing.propertyA = 'ZZ' OR existing.propertyB = 'ZZ' OR existing.propertyC = 'ZZ'
WITH existing
WHERE existing IS NULL MERGE (newNode:TYPE {propertyA: 'ZZ', propertyB: 'ZZ', propertyC: 'ZZ'})
RETURN newNode

 

3、模糊查询

match(emp) where emp.name =~'.*haha.*' return emp

4、其他用法

MATCH (n:Test) RETURN distinct keys(n)

5、节点邻居节点的查找

https://neo4j.com/labs/apoc/4.1/graph-querying/neighborhood/

https://www.cnblogs.com/sea520/p/11940400.html

参考:

 http://www.voidcn.com/article/p-hflcgpop-bvw.html

https://blog.csdn.net/liliang199/article/details/87255019

### Neo4j 前端开发所需的数据结构 对于基于 Neo4j 的前端应用而言,其核心在于如何有效地展示和操作图数据。由于图形数据库的独特性质,在构建前端界面时需特别关注节点(Node)与边(Relationships)这两种基本构成要素[^1]。 #### 节点 (Node) 每个节点代表实体,通常由唯一标识符(ID),标签(Label), 属性(Properties)组成: - **ID**: 每个节点都有唯一的内部 ID。 - **Label(s)**: 描述该节点所属类别或角色的一个或多个字符串标记。 - **Properties**: 键值对形式存在的附加信息集合;键为属性名而值则可以是任意简单类型或是数组等复杂类型。 ```json { "id": "0", "labels": ["Person"], "properties": { "name": "Alice", "age": 30, "interests": ["reading", "travel"] } } ``` #### 边 (Relationships) 连接两个节点的关系同样重要,它不仅定义了两者间的关联还可能携带额外的信息: - **Start Node & End Node**: 关系两端所指向的具体节点实例; - **Type**: 表明此关系具体为何种逻辑联系(例如 `FRIEND_OF` 或者 `WORKS_AT`); - **Directionality**: 明确指出方向是从起点到终点还是双向互指; - **Properties**: 类似于节点上的属性字段,可用于记录关于这条特定路径的元数据。 ```json { "startNodeId": "0", "endNodeId": "1", "type": "KNOWS", "direction": "OUTGOING", "properties": {"since": "2020"} } ``` ### 接口设计原则 为了实现前后端的良好协作以及高效通信,应当遵循 RESTful API 设计模式或其他适合处理资源请求的方式。考虑到 GraphQL 对图谱查询的支持优势明显,推荐采用这种方式来进行接口规划[^2]。 通过 GraphQL 查询语言可以直接指定想要获取哪些部分的数据,从而减少不必要的传输开销并提高响应速度。此外,利用 Schema 定义清晰地描述出整个系统的输入输出格式也有助于维护代码的一致性和可读性。 ```graphql query GetFriends($userId: String!) { user(id: $userId) { name friends { id name age } } } mutation AddFriendship($fromId: String!, $toId: String!) { createRelation(fromUserId: $fromId, toUserId: $toId, type:"FRIEND") { success message } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值