获取每个图表类(V,E及其子类)的记录计数的任何方法?
我尝试以SQL格式为当前案例构建查询:
SELECT @class, count(*) FROM V GROUP BY @class
SELECT @class, count(*) FROM E GROUP BY @class
但是使用count()
+ GROUP BY
是非常缓慢的组合。
虽然控制台命令list classes
能够快速运行并返回每个类(字段RECORDS
)中记录计数的值,但是如何通过SQL查询(或通过OrientJS API)提取此计数?
答案 0 :(得分:0)
我认为这是不可能的,也因为它不会像在控制台中那么快
答案 1 :(得分:0)
主要想法是找到一种方法:
技术细节
在OrientDB函数中,您可以访问具有orient
方法的.getDatabase()
变量。此方法返回JAVA ODatabaseDocumentTx类实例。此类提供了方法.countClass(className)
,该方法返回类className
(method documentation)的记录数,并且它的工作速度非常快。
<强>解决方案强>
在OrientDB Studio中创建名为“getClassCounts”的函数,语言“javascript”,idempotent:true:
var db = orient.getDatabase();
var classesRawInfo = db.getMetadata().getImmutableSchemaSnapshot().getClasses().toArray();
var classesList = {};
var i = classesRawInfo.length;
while(--i) {
var className = classesRawInfo[i].name;
classesList[className] = db.countClass(className);
}
return classesList;
执行:
SELECT getClassCounts()