我想在两个顶点之间添加一条新边。
以下是我使用
的命令def graph=ConfiguredGraphFactory.open('graph');
def g = graph.traversal();
graph.addVertex(label, 'Person', 'name', 'Jack', 'entityId', '100');
graph.addVertex(label, 'Person', 'name', 'John', 'entityId', '50');
def v1 = g.V().has('entityId', '100').next();
def v2 = g.V().has('entityId', '50').next();
v1.addEdge('managerOf',v2,'inEntityId', '100', 'outEntityId', '50')
然后每当我想要获得我刚刚创建的路径时:
g.V().outE().inV().path();
它返回:
[
{
"labels": [
[],
[],
[]
],
"objects": [
{
"id": 40968272,
"label": "Person",
"type": "vertex",
"properties": {
"name": [
{
"id": "oe22y-oe3bk-6mmd",
"value": "Jack"
}
],
"entityId": [
{
"id": "oe2h6-oe3bk-6ozp",
"value": "100"
}
]
}
},
{
"id": "1crua2-oe3bk-4is5-oectk",
"label": "managerOf",
"type": "edge",
"inVLabel": "Person",
"outVLabel": "Person",
"inV": 40980584,
"outV": 40968272,
"properties": {
"outEntityId": "50",
"inEntityId": "100"
}
},
{
"id": 40980584,
"label": "Person",
"type": "vertex",
"properties": {
"name": [
{
"id": "1cs5ql-oectk-6mmd",
"value": "John"
}
],
"entityId": [
{
"id": "1cs64t-oectk-6ozp",
"value": "50"
}
]
}
}
]
}
]
请注意,边缘并不反映我刚刚创建的内容。它倒了!这怎么可能?我做错了吗?
我使用JanusGraph,在数据浏览器中它也显示方向错误的边缘。
答案 0 :(得分:0)
我认为是对的。虽然在你的边缘,你扭转了你的属性。 " outEntityId"应该是" 100" (杰克)和" inEntityId"应该是" 50" (约翰)就像边缘inV
和outV
一样。换句话说,你创建了
jack-managerOf->john
for the" managerOf"边缘,边缘离开" jack",因此outV
是" jack",然后进入" john",因此{{1是" john"。
请注意,您可以通过使用Traversal API(aka Gremlin)的推荐路线来简化顶点/边缘添加:
inV