gremlin - Gremlin-python:如何编写在 where 条件下使用两个连接顶点的属性的查询?
问题描述
我是 Gremlin 的新手,正在尝试将 SQL 查询转换为 Gremlin。我有两种顶点类型,标记为host
和repo
,这是用于创建顶点和边的 Gremlin 脚本:
g.addV('asset').property(id, 'a1').property('ip', '127.4.8.51').property('scanDate', '2020-09-10').property('repoId', 1)
g.addV('asset').property(id, 'a2').property('ip', '127.4.8.55').property('scanDate', '2020-09-20').property('repoId', 1)
g.addV('asset').property(id, 'a3').property('ip', '127.4.8.57').property('scanDate', '2020-09-21').property('repoId', 1)
g.addV('asset').property(id, 'a4').property('ip', '127.4.10.36').property('scanDate', '2020-09-12').property('repoId', 2)
g.addV('asset').property(id, 'a5').property('ip', '127.4.10.75').property('scanDate', '2020-09-14').property('repoId', 2)
g.addV('repo').property(id, 'r1').property('repoName', 'repo1').property('assetAge', 10).property('repoId', 1)
g.addV('repo').property(id, 'r2').property('repoName', 'repo2').property('assetAge', 9).property('repoId', 2)
g.V('a1').addE('has').to(g.V('r1'))
g.V('a2').addE('has').to(g.V('r1'))
g.V('a3').addE('has').to(g.V('r1'))
g.V('a4').addE('has').to(g.V('r2'))
g.V('a5').addE('has').to(g.V('r2'))
我想在 Gremlin 中写下一个与下面的 SQL 查询执行相同操作的查询:
SELCET *
FROM asset a
JOIN repo r ON a.repoId = r.repoId
WHERE a.scanDate >= CURDATE() - INTERVAL (r.assetAge + 1) DAY
到目前为止,我已经尝试了以下代码python
:
from datetime import datetime, timedelta
from gremlin_python.process.traversal import gte
d = datetime.today() - timedelta(days=10) # here I have hard coded the days
traversal = g.V().hasLabel("asset").has("scanDate", gte(d))
traversal.valueMap().toList()
但我不知道如何将映射的reporepo.assetAge
顶点传递给. 非常感谢任何帮助。谢谢。days
timedelta()
解决方案
推荐阅读
- blockchain - 解释区块链,好像我真的很笨一样
- c++ - Make signed int value from unsigned int value and back
- php - PHP Guzzle 如何获取请求对象
- python - 查询之间的 Flask SQLAlchemy 返回空列表
- python - django 1.10.5;Postgis db 作为默认后端时出错
- php - Altorouter 表单重定向
- android - 是否可以自定义 Flutter Webview 错误消息?
- kubernetes - 除了 Istio 中的单个特定服务之外,有没有办法将身份验证应用于每个服务?
- excel - 如果某些行大于 0 对于非常大的工作表,Excel VBA 宏将删除行
- git - 致命:无法访问“http://repo.***.com/***/***.git/”:请求的 URL 返回错误:504