私はこのデータセットであなたのケースを試しました:

そして、これは私のクラスの構造ですTestClass
:

私の構造からわかるようにname
、モードで作成され、代わりに モードでDBに挿入されていsurname
ます。timeStamp
schema-full
nameSchemaLess1
nameSchemaLess1
schema-less
それを行った後、OrientDB Studio または Console でJavascript 関数を作成し (ここでpyOrient
説明されているように)、その後、コマンドを使用して呼び出すことができますSQL
。
TestClass
次の投稿された関数は、クラスのすべてのフィールド名を重複なしで取得します。
Javascript 関数:
var g = orient.getGraph();
var fieldsList = [];
var query = g.command("sql", "SELECT FROM TestClass");
for (var x = 0; x < query.length; x++){
var fields = query[x].getRecord().fieldNames();
for (var y = 0; y < fields.length; y++) {
if (fieldsList == false){
fieldsList.push(fields[y]);
} else {
var fieldFound = false;
for (var z = 0; z < fieldsList.length; z++){
if (fields[y] == fieldsList[z]){
fieldFound = true;
break;
}
}
if (fieldFound != true){
fieldsList.push(fields[y]);
}
}
}
}
return fieldsList;
pyOrient コード:
import pyorient
db_name = 'TestDatabaseName'
print("Connecting to the server...")
client = pyorient.OrientDB("localhost", 2424)
session_id = client.connect("root", "root")
print("OK - sessionID: ", session_id, "\n")
if client.db_exists(db_name, pyorient.STORAGE_TYPE_PLOCAL):
client.db_open(db_name, "root", "root")
functionCall = client.command("SELECT myFunction() UNWIND myFunction")
for idx, val in enumerate(functionCall):
print("Field name: " + val.myFunction)
client.db_close()
出力:
Connecting to the server...
OK - sessionID: 54
Field name: name
Field name: surname
Field name: timeStamp
Field name: out_testClassEdge
Field name: nameSchemaLess1
Field name: in_testClassEdge
Field name: nameSchemaLess2
ご覧のとおり、スキーマフルとスキーマレスの両方のすべてのフィールド名が取得されています。
それが役に立てば幸い