2017-04-07 61 views
-1

道歉,因爲這可能是關於這個主題的非常基本的問題,但我是Gremlin/DSE Graph的新手,我嘗試了很多方法來提取數據,我插入到我的圖中,但不知何故,我無法使其工作。無法打印DSE圖中的節點屬性

以下是我的: 1.將allow_scans設置爲true的圖形 2.在所有頂點的NodeID上定義了propertyKey和頂點以及物化索引的模式。

現在沒有關係,只是帶有數據點的頂點。

我寫了一個程序中插入我到DSE圖中的所有節點,因爲我得到迴應像下面這是成功的工作程序創建的每個頂點後:

Result({u'id': {u'out_vertex': {u'community_id': 853347840, u'~label': u'vertex', u'member_id': 14}, u'~type': u'Name', u'local_id': u'00000000-0000-8012-0000-000000000000'}, u'value': u'amount', u'label': u'Name'})] 

好了所以,現在的節點被插入,我想提取它們並打印他們的名字: 所以我做:

g.V().hasLabel('FIELD').has('NodeID','2559b635f077e86c7370ab1c4c798a06').values('Name'); 

以上空白結果成功地失敗了。我的意思是它運行成功,空輸出像沒有錯誤,但沒有輸出。 (在gremlin-console中爲null,在DataStax Studio中爲'成功 - 無結果')

然後我發現文檔中圖表不知道'has'是否只返回一個或多個節點,所以我用next來迭代按文檔和教程:

g.V().hasLabel('FIELD').has('NodeID','2559b635f077e86c7370ab1c4c798a06').next().values('Name'); 

即使這樣失敗,

org.apache.tinkerpop.gremlin.driver.exception.ResponseException

(Datastax studio不顯示更多信息) - 如何進一步調試?

我甚至在對面,我用地圖拉姆達辦法就來了:

g.V().hasLabel('FIELD').has('NodeID','2559b635f077e86c7370ab1c4c798a06').map{it.get().value('Name')}; 

與「它」沒有被定義迴應。

(我甚至試圖valueMap - 不知道,甚至被要求它)

我究竟做錯了查找和打印屬性節點的值?

任何可以幫助我提取名稱和其他屬性的方向或查詢?即使是多步查詢?但我不認爲這應該是那麼複雜。

UPDATE

按答案我得到以下回溯:

gremlin> :> g.V().hasLabel('FIELD').has('NodeID','2559b635f077e86c7370ab1c4c798a06').valueMap(true).next(); 
org.apache.tinkerpop.gremlin.groovy.plugin.RemoteException 
Type ':help' or ':h' for help. 
Display stack trace? [yN]y 
org.apache.tinkerpop.gremlin.groovy.plugin.RemoteException 
     at org.apache.tinkerpop.gremlin.console.groovy.plugin.DriverRemoteAcceptor.submit(DriverRemoteAcceptor.java:170) 
     at org.apache.tinkerpop.gremlin.console.commands.SubmitCommand.execute(SubmitCommand.groovy:41) 
     at org.codehaus.groovy.tools.shell.Shell.execute(Shell.groovy:104) 
     at org.codehaus.groovy.tools.shell.Groovysh.super$2$execute(Groovysh.groovy) 
     at sun.reflect.GeneratedMethodAccessor15.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:498) 
     at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) 
     at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) 
     at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1215) 
     at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:132) 
     at org.codehaus.groovy.tools.shell.Groovysh.executeCommand(Groovysh.groovy:259) 
     at org.apache.tinkerpop.gremlin.console.GremlinGroovysh.execute(GremlinGroovysh.groovy:84) 
     at org.codehaus.groovy.tools.shell.Shell.leftShift(Shell.groovy:122) 
     at org.codehaus.groovy.tools.shell.ShellRunner.work(ShellRunner.groovy:95) 
     at org.codehaus.groovy.tools.shell.InteractiveShellRunner.super$2$work(InteractiveShellRunner.groovy) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:498) 
     at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) 
     at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) 
     at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1215) 
     at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:132) 
     at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuper0(ScriptBytecodeAdapter.java:152) 
     at org.codehaus.groovy.tools.shell.InteractiveShellRunner.work(InteractiveShellRunner.groovy:124) 
     at org.codehaus.groovy.tools.shell.ShellRunner.run(ShellRunner.groovy:59) 
     at org.codehaus.groovy.tools.shell.InteractiveShellRunner.super$2$run(InteractiveShellRunner.groovy) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:498) 
     at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) 
     at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) 
     at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1215) 
     at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:132) 
     at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuper0(ScriptBytecodeAdapter.java:152) 
     at org.codehaus.groovy.tools.shell.InteractiveShellRunner.run(InteractiveShellRunner.groovy:83) 
     at org.codehaus.groovy.vmplugin.v7.IndyInterface.selectMethod(IndyInterface.java:232) 
     at org.apache.tinkerpop.gremlin.console.Console.<init>(Console.groovy:152) 
     at org.codehaus.groovy.vmplugin.v7.IndyInterface.selectMethod(IndyInterface.java:232) 
     at org.apache.tinkerpop.gremlin.console.Console.main(Console.groovy:401) 

我能夠在其他圖形做一些類似的操作。圖表有問題嗎?

更新2

我圖的頂點被錯誤地定義。

深入解決此問題的關鍵在於結果中的~label。它指向vertex而不是它應該是Field

定義數據插入組時,必須將標籤放在引號中,以便不得不提及引號時提及標籤。因此我無法遍歷節點。

回答

2

您需要確保迭代遍歷。最常見的是你可以使用兩種:

  • iterate()得到零結果
  • next()得到一個結果
  • toList()得到很多結果

我猜NodeID是獨一無二的,所以你可以試試這:

g.V().hasLabel('FIELD').has('NodeID','2559b635f077e86c7370ab1c4c798a06'). 
values('Name').next(); 

如果你'重新在該頂點的所有屬性感興趣,請嘗試:

g.V().hasLabel('FIELD').has('NodeID','2559b635f077e86c7370ab1c4c798a06'). 
valueMap(true).next(); 
+0

謝謝你的回答,我更新了我所得到的跟蹤。看起來像圖表有些問題。請你能幫我找出這裏可能是什麼問題。 ('FIELD')。has('NodeID','2559b635f077e86c7370ab1c4c798a06')。 values('Name')在具有相似節點的另一個圖中工作。不知道這一個出了什麼問題。 – Nik

+0

我的頂點是以錯誤的方式定義的。你的回答是正確的。謝謝 – Nik