在不浏览所有实例的情况下获取特定文档
Get a specific document without browsing all instances
我正在使用 ODatabaseDocumentTx 实例来处理我在数据库中的文档,但我找不到与函数 "getVertexByKey" 等效的函数,该函数对于使用 OrientBaseGraph 实例获取特定顶点很有用。
我确实为我的 class 添加了一个唯一索引,但我不知道如何使用它,我现在唯一的解决方案是这样使用 "browseClass" 函数:
ODatabaseDocumentTx db = new ODatabaseDocumentTx(...);
List<ODocument> list = db.browseClass("MyClass");
for (ODocument doc : list) {
if (doc.field("name").equals("name_i_need")) {
// and here i can use it
}
}
这有点……恶心!
我想要一种方法,就像我对 Vertex 所做的那样:
OrientGraph graph = new OrientGraph(...);
Vertex v = graph.getVertexByKey("MyVertexClass.name", "name_i_need");
更漂亮。
我很确定这个函数存在,但我在 orient 文档中找不到它。
如果没有,为什么?
create class YourClass
create property YourClass.name string
create index YourClass.name unique
insert into YourClass set name = 'name_you_need'
完成上述操作后,您可以:
ODatabaseDocument database = new ODatabaseDocumentTx("remote:localhost/DB").open("admin", "admin");
OIndex<?> nameIdx = database.getMetadata().getIndexManager().getIndex("YourClass.name");
OIdentifiable oId = (OIdentifiable) nameIdx.get("name_you_need");
System.out.println(oId.getRecord().toJSON());
我正在使用 ODatabaseDocumentTx 实例来处理我在数据库中的文档,但我找不到与函数 "getVertexByKey" 等效的函数,该函数对于使用 OrientBaseGraph 实例获取特定顶点很有用。
我确实为我的 class 添加了一个唯一索引,但我不知道如何使用它,我现在唯一的解决方案是这样使用 "browseClass" 函数:
ODatabaseDocumentTx db = new ODatabaseDocumentTx(...);
List<ODocument> list = db.browseClass("MyClass");
for (ODocument doc : list) {
if (doc.field("name").equals("name_i_need")) {
// and here i can use it
}
}
这有点……恶心!
我想要一种方法,就像我对 Vertex 所做的那样:
OrientGraph graph = new OrientGraph(...);
Vertex v = graph.getVertexByKey("MyVertexClass.name", "name_i_need");
更漂亮。
我很确定这个函数存在,但我在 orient 文档中找不到它。 如果没有,为什么?
create class YourClass
create property YourClass.name string
create index YourClass.name unique
insert into YourClass set name = 'name_you_need'
完成上述操作后,您可以:
ODatabaseDocument database = new ODatabaseDocumentTx("remote:localhost/DB").open("admin", "admin");
OIndex<?> nameIdx = database.getMetadata().getIndexManager().getIndex("YourClass.name");
OIdentifiable oId = (OIdentifiable) nameIdx.get("name_you_need");
System.out.println(oId.getRecord().toJSON());