我的OrientDB数据库(版本1.0.1)中有一个文档,结构很像这样:
{
"timestamp": "...",
"duration": 665,
"testcases": [
{
"testName": "test01",
"type": "ignore",
"filename": "tests/test1.js"
},
{
"iterations": 1,
"runningTime": 45,
"testName": "test02",
"type": "pass",
"filename": "tests/test1.js"
},
...
{
"testName": "test05",
"type": "ignore",
"filename": "tests/test1.js"
}
]
}
Run Code Online (Sandbox Code Playgroud)
如何在整个列表中查询,例如.如果我想查找包含"忽略"类型的测试用例的所有文档?
我尝试了以下查询
select from testresult where testcases['type'] = 'ignore'
Run Code Online (Sandbox Code Playgroud)
但这导致了NumberFormatException
.
select from testresult where testcases[0]['type'] = 'ignore'
Run Code Online (Sandbox Code Playgroud)
工作,但显然只查看每个文档的第一个列表元素.
select from testresult where testcases contains(type = 'ignore')
Run Code Online (Sandbox Code Playgroud)
不提供任何结果,但查询被接受为有效.
更新: 如果测试用例存储为单独的文档而不是嵌入列表,则以下查询按预期工作.
select from testresult where testcases contains (type = 'ignore')
Run Code Online (Sandbox Code Playgroud) 我有一个spring项目,我非常想使用Spring Data OrientDB,它是否已准备就绪?或者我应该只使用Graph API或蓝图?
根据OrientDB文档,它说
Drop Property命令从架构中删除属性.这不会删除记录中的属性值,只是更改架构信息.记录将继续具有属性值(如果有).
这在我的代码中创建了一些问题,使app为被删除的属性抛出空指针异常.有没有办法删除属性并从现有记录中删除值.
提前致谢.
将OrientDB的JDBC驱动程序与ActiveRecord一起使用的正确方法是什么?
我正在尝试将Rails 3.2应用程序连接到OrientDB 1.4.我安装了gem activerecord-jdbc-adapter
,并配置database.yml
如下:
development:
adapter: jdbc
username: admin
password: admin
driver: com.orientechnologies.orient.jdbc.OrientJdbcDriver
url: jdbc:orient:local:db/test_db2
Run Code Online (Sandbox Code Playgroud)
我按如下方式加载OrientDB的JDBC驱动程序:
# in config/application.rb:
require '/home/myuser/jars/orientdb-jdbc-1.4.0-all.jar'
Run Code Online (Sandbox Code Playgroud)
应用程序启动(使用rails s
)时抛出以下异常:
java.lang.NullPointerException
at arjdbc.jdbc.RubyJdbcConnection.unmarshalResult(RubyJdbcConnection.java:1187)
at arjdbc.jdbc.RubyJdbcConnection.set_native_database_types(RubyJdbcConnection.java:537)
at arjdbc.jdbc.RubyJdbcConnection$INVOKER$i$0$0$set_native_database_types.call(RubyJdbcConnection$INVOKER$i$0$0$set_native_database_types.gen)
...
Run Code Online (Sandbox Code Playgroud)
我的配置中是否缺少某些内容?将OrientDB的JDBC驱动程序与ActiveRecord一起使用的正确方法是什么?
OrientDB问题......
有没有人知道如何在插入后获取recordId:
db.save(person)
Run Code Online (Sandbox Code Playgroud)
我在下面尝试了人POJO:
@Id
private Object id;
Run Code Online (Sandbox Code Playgroud)
但保存后id字段为null.我用Google搜索并用谷歌搜索无济于事.我只需要插入一个对象,然后获取orientdb生成的recordid.
我使用OrientDB类型图.我需要Gremlin的语法来搜索相同的SQL LIKE运算符
LIKE 'search%' or LIKE '%search%'
Run Code Online (Sandbox Code Playgroud)
我已经检查过has和filter(在http://gremlindocs.com/中).但是必须确定使用type属性传递的确切值.我认为这与搜索逻辑不一致.
谢谢你的一切.
在orientDB中,我们有链接和边连接顶点.我无法在orientdb文档中找出每个人的缺点/优点.
论坛示例 - 涉及三个实体:作者,消息,论坛.
作者在论坛中写入消息. - 选项一:消息是作者和论坛顶点之间的边缘 - 选项二:消息具有指向作者的链接和另一个指向论坛的链接
换句话说,选择什么策略以及为什么?
我有顶点"人物"和边缘"知道".这是我如何创建它的SQL示例.
CREATE CLASS Person EXTENDS V;
CREATE PROPERTY Person.name STRING;
CREATE CLASS Knows EXTENDS E;
INSERT INTO Person (name) VALUES("John")
INSERT INTO Person (name) VALUES("Ann")
INSERT INTO Person (name) VALUES("Harry")
Run Code Online (Sandbox Code Playgroud)
当我在约翰之间创造一个优势时 - > Ann by
CREATE EDGE Knows FROM (SELECT FROM Person WHERE name = "John")
TO (SELECT FROM PERSON WHERE name = "Ann")
Run Code Online (Sandbox Code Playgroud)
它创造了它,每件事都没问题.
但是当我意外地多次创建边缘时会出现问题.
对于关系"知道"重复是多余的,但对于其他一些如"访问"(John [Visited - >] New York),如果边缘"已访问"具有属性"日期",则边缘的重复是期望的特征.
我试图通过向边缘"Knows"添加唯一索引来解决它,但之后我只能在一对顶点之间创建边缘.
并且在创作之前检查每一次存在的边缘对我来说似乎也不是一个好主意.
如何以正确的方式解决这个问题?
我想在我的应用程序中嵌入一个图形数据库(运送Windows,Linux和MAC).我将搜索范围缩小到ArangoDB和OrientDB.我能够使嵌入式OrientDB工作,但我仍然想尝试ArangoDB做出明智的决定.OrientDB嵌入式版本的文档很清楚,而我找不到ArangoDB的任何内容.ArangoDB是用C++编写的,所以我还要弄清楚如何使它可以跨平台移植,以及如何使用我的应用程序安装它.ArangoDB(或OrientDB)的使用对我们应用程序的用户应该是透明的.谢谢!
更新:我忘了提,我们的应用程序是用C++编写的.我们正在寻找可以帮助我们使用现有模块构建ArangoDB二进制文件的指令.然后我们可以弄清楚如何加载二进制文件并与它们交谈.