Я пытаюсь создать ребра между вершинами двух уже загруженных классов вершин A и B, используя OrientDB версии 3.0.12. Класс A имеет id1 как свойство, где хранятся A1, A2, A3 и т. Д., А класс B имеет id2 как свойство, где хранятся B1, B2, B3 и т.д. Ниже приведено описание классов, их свойств и хранимых узлов.
Class: B
Property: id2
B1
B2
B3
B4
Class: A
Property: id1
A1
A2
A3
A4
Я использую CSV-файл (dge.csv) для поиска взаимосвязей между A и B. У A и B может быть несколько связей «многие ко многим» между ними. Ниже приведены несколько примеров строк файла CSV:
fromID toID
A1 B1
A2 B1
A3 B1
A1 B3
Однако проблема в том, что ребро создается только для первого ряда вышеуказанного CSV.
Пример: ребро создается только между A1 и B1 в приведенном выше примере .
Я использую следующий файл JSON для создания края:
{
"source": { "file": { "path": "../edges.csv" } },
"extractor": { "csv": {
"separator":"," ,
"columns": ["fromID:String","toID:String"]
}
},
"transformers":
[
{
"command": {
"command": "CREATE EDGE relatedto FROM (SELECT FROM A WHERE A.id1 = '${input.fromID}') TO
(SELECT FROM B WHERE B.id2 = '${input.toID}')",
"output": "edge"
}
},
{
"field": { "fieldNames": ["fromID", "toID"], "operation": "remove" }
}
],
"loader": {
"orientdb": {
"dbURL": "plocal:../databases/demodb",
"dbUser": "admin",
"dbPassword": "admin",
"dbType": "graph",
"classes": [{"name": "relatedto", "extends": "E"}]
}
}
}