Функции в OrientDB Studio — каков правильный синтаксис?

Мы потратили некоторое время, пытаясь реализовать простые функции в студии, и отсутствие документации, смешанное с, казалось бы, изменяющимся синтаксисом, усложняет задачу. то есть: функция orient.getGraph(), кажется, работает на 2.0.3, но не на 2.0.9 или 2.1-rc2.

Вот код, который у нас уже работает на 2.0.3:

var mydb = orient.getGraph();

var nearbyNodes = mydb.command('sql',"select in('Contributes_To') from " +originNode);

return nearbyNodes;

Что возвращает:

[
    {
        "@type": "d",
        "@rid": "#-2:0",
        "@version": 0,
        "in": [
            "#13:1",
            "#13:0",
            "#13:3"
        ],
        "@fieldTypes": "in=z"
    }
]

Я хотел бы получить значения из ключа "in".

ВОПРОС 1. Есть ли обновленный и надежный источник документации для функций JavaScript Studio в OrientDB?

ВОПРОС 2. Как правильно выполнить команду SQL для более новых версий (2.0.9 и 2.1-rc2)? Приведенный выше пример не работает в новых версиях.

ВОПРОС 3. Как правильно обрабатывать возвращенные объекты? Как было объяснено здесь не работает

Спасибо


person Joao Barcia    schedule 25.05.2015    source источник


Ответы (1)


Я также пытался найти документацию по JavaScript API. Однако в своем исследовании я действительно углубился в код, отвечающий за управление скриптами в OrientDB.

Для Graph DB класс, управляющий сценариями, — com.orientechnologies.orient.graph.handler.OGraphServerHandler. Если вы посмотрите на этой строки видно, что переменная "ориент" привязывается к экземпляру OScriptGraphOrientWrapper

В OScriptGraphOrientWrapper (ссылка на javadoc приведена выше) вы можете видеть, что метод getGraph() фактически возвращает экземпляр OScriptGraphWrapper

В заключение, когда вы фактически выполняете функцию JavaScript, на самом деле вызываются методы в вышеупомянутых классах Java (и многие другие). Таким образом, вы можете ссылаться на любой метод, доступный в этих классах, особенно на OScriptGraphWrapper, и вы можете работать с фактическими возвращаемыми типами методов в этих классах.

Я больше увлекаюсь базами данных документов в OrientDB, этот трюк действительно сработал для меня. Другими словами, JavaDoc — это документация по API. Надеюсь, что это работает для вас.

Ваше здоровье!

Омега

person Omega Silva    schedule 26.05.2015
comment
Спасибо Омега! Это уже некоторая помощь. Я могу сделать запрос для ближайших соседей через mydb.command(sql,select..., []). Тем не менее, у меня все еще возникают проблемы при попытке сделать что-то столь же простое, как изменение простого параметра INT внутри каждого из возвращаемых узлы. Любые советы о том, какую функцию использовать? Я пытался использовать mydb.command(sql, update..., []), но я не смог ввести возвращаемые идентификаторы вершин в выделение. - person Joao Barcia; 26.05.2015
comment
Я попытался обновить значение int для вершины в базе данных GreatfulDeadConcerts. Ниже приведен код ‹br/› var db = orient.getGraph(); var result = db.command("sql", "SELECT FROM V WHERE @rid = #9:2"); print(result[0].getRecord().field("@rid")); db.command("sql", "UPDATE V set performances = 10 WHERE @rid = " + result[0].getRecord().field("@rid")); - person Omega Silva; 27.05.2015
comment
Вместо V вы можете (и должны!) указать узел напрямую через его @rid. db.command("sql", "UPDATE " + result[0].getRecord().field("@rid") + " set performances = 10"); - person aw31n; 05.06.2015