2017-05-16 4 views
0

私は次のように探しています:私は、次戻ります「クエリ」の値を思い付くしようとしてい関係と日付プロパティで検索するためにnephy ruby​​ gemにサイファークエリを提供するにはどうすればよいですか?

https://github.com/maxdemarzi/neography/wiki/Scripts-and-queries

:関係を持って

  • ノードをworkingOn
  • 作成日は昨日です(Date型のように見えなかったので、エポック時間の整数を使用しました)
  • プロパティを返すvalue

は、私が試した:

start n=node(id) # where id is the reference node 
match n-[:workingOn]-() 
where has(n.date < Date.now.to_i and n.date > Yesterday.to_i) # yesterday is a Date for yesterday 
return n 

が解決: 私はそれを解決したとしてマークされた質問から洞察を得たが、私がやったことは、クエリ文字列を作成したと移入するために補間を使用しますそれは必要な値と一緒に。例えば。 query = "Match (n) -[#{relationship}]-(n2)....etc

+0

あなたはどのバージョンのNeo4jを使用していますか?これは古くからの構文ではありませんか? –

答えて

1

旧式のCypher構文を使用しています。最近のバージョンのneo4j(3.1+)を使用していて、適切なAPOCプラグインがインストールされている場合、次のように動作するはずです。 (私は、クエリを作成するときidパラメータが渡されることを前提としています。そうでない場合は、実際のID値で$idを交換してください。)

WITH timestamp() AS now 
MATCH (n) 
WHERE ID(n) = $id AND 
    (n)-[:workingOn]-() AND 
    apoc.date.convert(apoc.date.convert(now, 'ms', 'd') - 1, 'd', 'ms') < n.date < now 
RETURN n; 

それはミリ秒単位で(現在のエポックタイムを取得するためのtimestamp()機能を使用しています)、APOC関数apoc.date.convertを2回使用して、昨日の開始のエポック時間を取得します。

nのみ単一の行がそのnが複数workingOn関係を有している場合であっても、生成されるように、また、WHERE句に(n)-[:workingOn]-()パターンを移動させます。

(あなたがnノードのvalueプロパティを返したい場合RETURN句は、実際にRETURN n.valueだろう。)

[UPDATE]

GrapheneDBはAPOCのようなプラグインをサポートしています。 See their documentation

ネイティブneo4j IDで検索するには、最初にID値を知る必要があります。最初に別のクエリを実行する必要があるかもしれません。ただし、元のIDがリサイクルされ、元のIDが削除された場合は新しいノードに使用できるため、ネイティブIDではなく独自のIDを割り当てて使用する方がよい場合があります。

+0

APOCはどのように接続しますか?私はGraphene DBを使用していますか?それなしでそれを行う別の方法はありますか? – Angela

+0

また、素早く関連する質問:ノードIDは一時的なものであると書類に記載されているので、最初に値$ idを割り当てるためにクライアントIDを検索する必要がありますか? – Angela

+0

私の更新された回答を参照してください。 – cybersam

関連する問題