2016-06-15 28 views
0

私はOrientDBのprofiではないので、私の質問はダムと聞こえるでしょう。私はドキュメントやネット上で何の答えも見つけられませんでした。OrientDB - 選択した頂点を他の頂点でフィルタリングします

This is a sample of a data structure that I have: 私は青い目を持つすべてのビーバーを見つけたいと思っています。彼らは幸せで、彼らはそれを知っています。

SELECT out('has').eyeColors, out('is').happinessState FROM beavers 

のようなものしかし、どのように私はそれらの接続の頂点でフィルタリングん -

私は目の色とアウト()関数と幸福の状態を選択するために管理していますか?私は

SELECT * FROM beavers WHERE out('has').eyeColors = 'blue' AND out('is').happinessState = 'happy and knows it' 

SELECT * FROM beavers WHERE (SELECT out('has').eyeColors FROM beavers) = 'blue' AND (SELECT out('is').happinessState FROM beavers) = 'happy and knows it' 

を試してみたが、クエリの種類の両方が空の結果を返す傾向にあります。

どうすればこのような選択を行うことができますか?

*私はCommunity Edition、v。2.1.11を実行し、このすべてをサーバー側JS関数で実行します。

おかげで、あなたはout()のでCONTAINS単語を使用する必要がWHERE条件で グレゴリー

答えて

1

からin()both()のためにそうは - リストを返します。あなたはそれを選択して、リストかを返すかどうかを確認することができます例えば

select from Beaver where out('has').eyeColors contains "Blue" and out("iss").happinessState contains "happy and knows it" 

select out('has').eyeColors from Beaver 

PS

私はあなたがエッジを使用していることがわかりクラスisと呼ばれています。それはプライベートワードなので許可されていないと思います。


希望します。イワン


UPDATE

select name from Children 
let $a=(select from Beaver where in('has')[email protected] contains [email protected] and out('has').eyeColor contains "Blue" and out("iss").happinessState contains "happy and knows it") 
where $a.size() > 0 
+0

は完璧、おかげでイワン:) 追加の接続の問題を作品 - 私は、サブクエリで、このようなクエリを使用することができますか? –

+0

たとえば、「ハザー・エッジ・ビーバーズ」に接続され、「ビーバーズ・オブ・ビーバーズ」、「ブルー・アイズ」、「ハッピー・ザ・ビーバーズ」を検索したい子供たちを追加する場合(クラス名この場合、すべての名前はダミーであり、論理をより明確にするだけです)。それとも、JSサーバサイドの機能でこれを達成するためのより良い方法がありますか? –

+0

で、これはやや複雑です。私は私の答えを変更するつもりです –

関連する問題