2015-04-15 37 views
0

我正在使用ODatabaseDocumentTx實例在DB中處理我的文檔,並且找不到與「OrientVertexByKey」功能相當的功能來獲取具有OrientBaseGraph的特定頂點實例。獲取特定文檔而不瀏覽所有實例

我做了一個唯一索引添加到我的課,但我沒有找到如何使用它,我從現在唯一的解決辦法是使用「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 
} 
} 

這是一種......噁心!

我想一個辦法做到這一點我做的頂點方式:

OrientGraph graph = new OrientGraph(...); 

Vertex v = graph.getVertexByKey("MyVertexClass.name", "name_i_need"); 

方式更加美麗。

我很確定這個函數存在,但我找不到它與東方文檔。 如果沒有,爲什麼?

回答

1
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()); 
+0

由於它的工作。我第一次嘗試直接使用ODocument而不是OIdentifiable,但它似乎並沒有工作,但我很好,使用oId.getIdentity()。我不會找到這個單獨的,謝謝 – Charrette

+0

很高興它的工作! :) – vitorenesduarte

相關問題