2012-02-13 3 views

risposta

10
  1. Come si ottengono i nodi collegati al nodo [5] con un margine con un'etichetta "conosce" e un peso> 50?

    gv (5) .outE ('sa'). Filtrata {it.weight> 50} .INV

A seconda del rapporto/bordo di direzione potrebbe essere "inE" anziché outE o "both" passo allora sarà necessario regolare la query in quanto si avrà bordi nella direzione opposta o bordi in entrambe le direzioni ...

  1. Come faccio ad avere i nodi relativi al nodo [5] con etichetta "sa", ordinati per peso?

    gv (5) .outE ('sa') {filtrare it.weight> 50} .Sort {a, b -> a.weight < => b.weight}. ToList() ._. inV

+0

# 1 funziona, # 2 genera il seguente errore: 'Nessuna proprietà di questo tipo: inV per la classe: java.util.AbstractList $ ListItr' – zsquare

+2

quale versione di Neo4j e Gremlin stai usando? Si sta recuperando una lista lì, probabilmente è necessario trasformarla in una pipe con _() o così prima di essere in procinto di trattarla con ulteriori passaggi. –

+0

Im in 1.4.1, il tentativo di aggiornamento a 1.6 e provarlo. – zsquare

12
Non

sicuro di Gremlin, ma in Cypher è:

1:

START s=node(5) MATCH s-[r]-f WHERE r.weight > 50 RETURN f 

2:

START s=node(5) MATCH s-[r:knows]-f RETURN f ORDER BY r.weight 

Se vi preoccupate per la direzione della relazione, mettere frecce sulle relazioni, come "s - [] -> f" o "s < - [] - f"

+0

Grazie, ma stavo cercando una query gremlin. – zsquare

+0

Ah, ok. Vai quindi con la risposta di abki, con il cambiamento suggerito da Peter. Qualche ragione particolare per andare con Gremlin su Cypher per questo scopo? –

+1

Personalmente, trovo Cypher più pulito, e più semplice da capire, ma il progetto su cui sto lavorando usa gremlin. – zsquare