2016-09-26 12 views
-1

のパスを見つけるために、私はこのように構成されているグラフがあります。OrientDBの日付操作は、同じ日のノードが、別の年

A - > B

A日付フィールドを持っているが。

これはまだmy other questionと同じ問題に基づいていますが、これは1つのOSQL呼び出しですべてを作成してエッジを作成しようとすることには関係しません。この場合、次のようなパスを生成しようとしています。

A1(date = 2014-01-01)---> B < --- A2(date = 2013-01-01)

そして、A1とA2のIDだけを含むテーブルを返します。

私は次のようになりますMATCHクエリアップ作業を開始しました:これは動作します

MATCH {CLASS: A, AS: A1} -edgeTypeA-> 
    {AS: B} <-edgeTypeA- 
    {AS: A2, WHERE: {$matched.A1.Date=$currentMatch.Date} 
RETURN A1, B, A2 

をそれだけで基本的にA1とA2はA1とA2が同じである場合を含む正確に同じ日付を(あるマッチを返していますノード)。

format()を使用して日付フィールドの一部を抽出できることがわかっています。例えば、今年の文字列が必要な場合は、$ currentMatch.Date.format( 'yyyy')を使用してしかし、私はまだクエリの目的のためにその日付を増やす方法を考え出していません。

+0

こんにちは、Javascriptの便利な機能ですか? Thx –

+0

数日前に既にあなたが既に質問したのと同じ質問ですか?http://stackoverflow.com/questions/39500535/orientdb-create-edge-between-two-nodes-with-the-ame-day-of年? –

+0

@ oleksandr-gubchenkoそれはまだ同じ問題です。私はAlessandroの返答が早いのを見ていませんでした。私はサーバー側の機能に没頭しましたが、動作していますが、サーバーが動作している必要があります。だから、私はJavaアプリケーションに取り組んでいます。私はもう少し一般的なものを得ようとしており、ちょうどOSQL内で日付の操作がどれほど正確であるかというアイデアを得たいと思っています。私が見たほとんどの例では、日付または日付範囲が先験的にわかっていますが、パス内の相対日付に基づいてパスが有効であるというグラフパターンが気になります。 – TxAG98

答えて

1

私の以前の質問ではwhat Alessandro didを見てから仕事をしました。アーカイブ目的で私のソリューションを追加しています。うまくいけば、それはOSQLクエリ内で日付操作を行う必要がある人を助けるかもしれない。

ここに私がなってしまったものです:それは一種のsum()に電話をかけるために持っているたくさんのように感じている

+----+------+------+ 
|# |A1 |A2 | 
+----+------+------+ 
|0 |#49:30|#49:32| 
|1 |#55:44|#56:46| 
|2 |#53:0 |#53:2 | 
|3 |#55:20|#55:22| 
|4 |#49:42|#49:44| 
|5 |#50:32|#50:34| 
+----+------+------+ 

MATCH {CLASS: A, AS: A1} -edgeTypeA-> 
    {AS: B} <-edgeTypeA- 
    {AS: A2, WHERE: ($matched.A1.Date.format('yyyy').asInteger()=sum($currentMatch.Date.format('yyyy').asInteger(),-1) AND 
        $matched.A1.Date.format('MM-dd')=$currentMatch.Date.format('MM-dd')) } 
RETURN A1,A2 

と私は私のデータのために正しいことを得ますとasInteger()しかし、今私はそれを理解し、それを使用することができます。

関連する問題