在不浏览所有实例的情况下获取特定文档

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());