我试图找出从它连接的两个顶点中选择边的格式。
边缘位于“连接”类中,并连接两个“节点”类顶点。源节点是#11:6(UNIQUE索引字段ip = '10 .64.32.100'),目的地是#11:7(ip = '10 .79.215.231')。 Connection类的Connection.in和Connection.out属性上有一个UNIQUE索引。
我尝试过以下查询,这些查询都返回一个空集:
SELECT FROM Connection WHERE OUT(Node) = (SELECT FROM Node WHERE ip = '10.64.32.100')
SELECT FROM Connection WHERE (SELECT FROM Node WHERE ip = '10.64.32.100') IN OUT(Node)
SELECT FROM Connection WHERE #11:6 IN OUT(Node)
SELECT FROM Connection WHERE OUT(Node) = #11:6
我已经检查过以确保SELECT Node语句确实返回了正确的rid(#11:6)
更大的上下文是更新边缘类“连接”中的时间字段。 Connection具有EMBEDDEDLIST时间戳的时间。使用pyorient,调用代码是:
try:
client.command("CREATE EDGE Connection FROM {0} TO {1} CONTENT {2}".format(src_str, dst_str, edge_cont))
except pyorient.exceptions.PyOrientORecordDuplicatedException:
client.command("UPDATE Connection ADD times = {0} WHERE {1}".format(time_list, <<!!QUERY GOES HERE!!>>)
从上面可以看出,由于我使用catch异常来触发UPDATE,我没有已经存在且唯一索引的Connection的@rid,因此我需要一个SELECT语句来指定哪个Connection对象我想添加新的时间。另一种解决方案是找出如何返回已存在的连接的@rid(如果存在)。我不知道该怎么做。
任何人都可以帮我找到正确的SELECT语句,只使用两个连接顶点返回所需的边缘吗?
答案 0 :(得分:4)
尝试此查询:
SELECT FROM Connection WHERE OUT = #11:6 AND (SELECT @rid FROM Node WHERE ip = "10.79.215.231") IN IN
希望它有所帮助。