我是OrientDB的新手.我想使用OrientDB的功能,但是,我的想法与@rid函数的使用有点混淆.
我已经阅读了应用程序和小组讨论的Web文档,我正在试图弄清楚这些概念.
对于有关该问题的任何交叉发布,我深表歉意.我无法理解(@rid)的用法.在在线应用程序中,我们如何理解和使用顶点或节点的@rid值?
我们必须使用所有这些吗?如何在不使用@rid的情况下遍历?我们怎样才能确定生成这种动态查询的框架中的11:4值?
select from 11:4 where any() traverse(0,10) (address.city = 'Rome')
Run Code Online (Sandbox Code Playgroud) 如果有人可以向我解释以下三个查询之间的区别以及为什么只有最后一个查询有效,我将不胜感激.
select out() from #1:0 where @class instanceof 'BaseClass'
select expand(out()) from #1:0 where @class instanceof 'BaseClass'
select from (select expand(out()) from #1:0) where @class instanceof 'BaseClass'
Run Code Online (Sandbox Code Playgroud)
非常感谢你的帮助!
如果我从console.sh打开到OrientDB数据库的连接,那么我使用单独的Java代码来添加类,除非我重新连接,否则该类不会在控制台会话中显示("列表类").
为什么架构更改不通用?这是否意味着不同的客户端会以不同的方式看到相同的
只是为了澄清 - 我不是要求一个解决方法,我问"为什么"这种行为存在,我正在寻找的答案将解释"为什么".
在orientdb文档中,我找到了一个像LIST CLASSES或CLASSES这样的命令,它返回数据库中当前类的列表 - >
orientdb> LIST CLASSES
CLASSES
-------------+------+-------------+-----------
NAME | ID | CLUSTERS | ELEMENTS
-------------+------+-------------+-----------
Person | 0 | person | 7
Animal | 1 | animal | 5
AnimalRace | 2 | AnimalRace | 0
AnimalType | 3 | AnimalType | 1
OrderItem | 4 | OrderItem | 0
Order | 5 | Order | 0
City | 6 | City | 3
-------------+------+-------------+-----------
TOTAL 16
-----------------------------------------------
.
Run Code Online (Sandbox Code Playgroud)
我试图用select*从V加载所有数据库,然后尝试按@class过滤所有结果,但我不认为这是一个好主意,当数据库变大...
有没有办法通过SQL查询获得相同的结果?
我正在使用 OrientJS (v2.2.10) 在 NodeJS (v8.11.3) 中开发一个应用程序,该应用程序将连接到本地托管的 OrientDB (v3.0.6) 数据库并对其进行查询。但是,当我尝试运行程序时,每次都会收到“套接字已关闭”错误。
我能够连接到数据库并通过 OrientDB 的控制台和 Web 界面进行查询,因此我知道可以通过地址http://localhost:2480访问该数据库。如果我在命令提示符中运行“netstat -a”,我可以看到端口 2480 正在侦听 TCP 连接。
这是我当前正在运行的代码:
//Import OrientJS driver for OrientDB
var OrientJs = require('orientjs');
//Connect to OrientDB server
var server = OrientJs({
host: "localhost",
port: "2480",
username: "root",
password: "root"
});
//Connect to 'demodb'
var db = server.use({
name: 'demodb',
username: 'root',
password: 'root'
});
console.log("Connected to database")
//Select all entries in 'Castles' table and print to console
db.select().from('Castles').all()
.then(function(result) {
console.log(result); …Run Code Online (Sandbox Code Playgroud) 我在 SO 上看到了一些类似的问题,但没有一个答案对我有用,所以我希望得到一个新的答案,这些新功能自从其他问题被问到后,已添加到 OrientDb 的最新版本中。
我正在尝试查询所有具有特定类型的传出边缘但没有其他类型的传出边缘的顶点。
作为一个简单关系的例子
人 ---- 朋友 ---> 人
人 ---- 拥有 ---> 汽车
我试图找到所有有朋友但没有汽车的人。
我已经尝试了以下查询,但没有运气(它返回所有人,而不管这些顶点是否具有特定类型的传出边缘)
select from Person where (out('Friend') not null and out('Owns').size() = 0)
select from Person where (out('Friend') is not null and out('Owns') is null)
Run Code Online (Sandbox Code Playgroud)
在我的努力中,我意识到按照此页面的 WHERE 子句中的 OrientDb 尚不支持 NOT 查询:https : //github.com/orientechnologies/orientdb/wiki/SQL-Where 有人可以验证这是否确实如此.
无论如何,我继续并试图简化我的查询并试图只找到没有“Owns”传出边缘的顶点。即使这样也不起作用,因为它似乎返回了我图中的所有 Person 顶点:
select from Person where (out('Owns').size() = 0)
select from Person where (out('Owns') is null)
Run Code Online (Sandbox Code Playgroud)
不确定我缺少什么,但任何帮助都一如既往地受到高度赞赏。
我正在尝试设置一个远程OrientDB服务器,我试图从本地Java代码输入顶点.
当我尝试以下代码时:
private static final void dropDb() {
OrientGraphNoTx graph = new OrientGraphNoTx(ORIENT_URL);
graph.drop();
}
Run Code Online (Sandbox Code Playgroud)
我得到一个例外说:
Exception in thread "main" com.orientechnologies.orient.core.exception.ODatabaseException: Cannot delete database
...
Caused by: java.lang.UnsupportedOperationException: Cannot delete a database in a remote server. Please use the console or the OServerAdmin class.
Run Code Online (Sandbox Code Playgroud)
如何在OrientDB中使用Java删除远程图形?
假设我有 3 个以分布式模式运行的 OrientDB 主机,位于以下地址:
使用 Java 客户端,获取对数据库的引用的典型方法是执行以下操作:
this.graphFactory = new OrientGraphFactory(
"remote:[host]/[database]",
"username",
"password")
.setupPool([...], [...]);
Run Code Online (Sandbox Code Playgroud)
在连接字符串参数中,如何指示有多个主机?我的第一直觉是在单独的 IP 上手动设置 TCP 负载平衡器(即 HAProxy),并让它在我的 3 台主机之间分发。
有没有办法告诉 API 有多个 IP 可供选择,还是应该在我的实例前设置负载均衡器?
我有一个场景,我有一个图形,并希望创建一个继承到顶点.
使用已经指定的类:具有特定属性的Person节点(超类),我正在创建子类并将新属性分配给指定为under的子类(这里Mysubclass是person的子类)
OrientGraph graph = new OrientGraph("remote:/ localhost/newhilti","root","varun"); graph.createVertexType("Mysubclass","Person");
Vertex vPerson = graph.addVertex("class:Mysubclass");
vPerson.setProperty("firstName", "John");
vPerson.setProperty("lastName", "Smith");
graph.commit();
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试获取Mysubclass的属性时,它并没有给我超类的属性,即.人.
如果我们使用继承,我可以请求澄清这里是否有任何遗漏,或者这是正常的行为,我认为不是这种情况.
谢谢-
Varun Tahin