首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RedisGraph中的体系结构与查询

RedisGraph中的体系结构与查询
EN

Stack Overflow用户
提问于 2021-07-10 16:18:25
回答 1查看 312关注 0票数 1

我对图形,RedisGraph和Cypher都很陌生,这花了我几个小时的时间才解决。

我有用户付费给其他用户。付款可以从用户处存入。其他一些用户最终可以提取押金,但定金也永远不会被收回。

最后我得到了这个:

代码语言:javascript
复制
(u:User)-[d:Deposit]->[t:Transaction]<-[w:Withdrawal]-(u:User)

然而,在某个时候,我需要找到没有提款的交易。

我的两个问题:

如果您有更好的逻辑,那么什么是更好的architecture?

  • even呢?在示例中,有什么方法可以在没有提取边的情况下检索节点呢?

我们将非常感谢您的帮助!‍♂️

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-10 17:16:52

,什么是更好的架构?

我相信你指的是所谓的“图形建模”。基本形式的图形建模由派生实体和句子中的动词组成。

  • 实体->候选标签
  • 谓词->候选关系类型

--付款可以从用户处存入。其他用户最终可以提取押金,

  • 实体:支付/存款/交易(我假设您可以互换使用)和用户
  • 谓词:存款和取款

所以你把这个钉得很好。

关于你的第二个问题。给定两笔交易

代码语言:javascript
复制
(u1:User {uid:1})-[:Deposit]->(t1:Transaction {tid:1})<-[:Withdrawal]-(u3:User {uid:3})
(u2:User {uid:2})-[:Deposit]->(t2:Transaction {tid:2})
代码语言:javascript
复制
redis:6379> GRAPH.QUERY g "MERGE (u1:User {uid:1})-[:Deposit]->(t1:Transaction {tid:1})<-[:Withdrawal]-(u3:User {uid:3}) MERGE (u2:User {uid:2})-[:Deposit]->(t2:Transaction {tid:2})"
1) 1) "Labels added: 2"
   2) "Nodes created: 5"
   3) "Properties set: 5"
   4) "Relationships created: 3"
   5) "Cached execution: 0"
   6) "Query internal execution time: 1.920000 milliseconds"

可以在查询时添加WHERE NOT子句。

代码语言:javascript
复制
MATCH (u:User)-[d:Deposit]->(t:Transaction)
WHERE NOT ((t)<-[:Withdrawal]-())
RETURN u.uid

,它只应返回具有uid 2的用户。

代码语言:javascript
复制
redis:6379> GRAPH.QUERY g "MATCH (u:User)-[d:Deposit]->(t:Transaction) WHERE NOT ((t)<-[:Withdrawal]-()) RETURN u.uid"
1) 1) "u.uid"
2) 1) 1) (integer) 2
3) 1) "Cached execution: 0"
   2) "Query internal execution time: 0.816100 milliseconds"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68329545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档