Friday 15 March 2013

OrientDB query friend of friends with more information and filtering -


परिचय:

हाय,

I एक ओरिएंट डीबी क्वेरी बनाने के बारे में एक सवाल है। क्वेरी को मित्रों के दोस्तों के सभी कोने मिलना चाहिए (यह दूसरे स्तर के रिश्ते के बराबर है) + 2 के बीच का पुल। उसके बाद, क्वेरी को किनारे की संपत्ति के बाद रिकॉर्ड्स को फ़िल्टर करना चाहिए।

मैं ओरिएंट डीबी 1.7.4 चला रहा हूं।

स्कीमा का उदाहरण:

उदाहरण के लिए, निम्नलिखित स्कीमा लेते हैं:

- > उपयोगकर्ता एक वर्टक्ेक्स है, प्रॉपर्टी आईडी (एन्टी) के साथ

-> ज्ञात एक एज है, संपत्ति का प्रकार (स्ट्रिंग) के साथ (मान लें कि इस संपत्ति के कुछ मान हैं: मित्र, परिवार, आदि) < / P>

मैं जो संबंध देख रहा हूं वह इस तरह से है:

  उपयोगकर्ता & lt; - जानता है - & gt; उपयोगकर्ता & lt; - जानता है - & gt; मुझे सभी संबंधों की आवश्यकता है, इससे कोई फर्क नहीं पड़ता कि वे किस दिशा में हैं (भले ही दिशा अन्य प्रश्नों के लिए महत्वपूर्ण है)      

सभी उपयोगकर्ताओं (दूसरे उपयोगकर्ता) को दूसरी डिग्री प्राप्त करने के लिए, इस तरह की एक क्वेरी पर्याप्त होगी:

  विस्तृत चुनें (सेट (दोनों ()। दोनों ())) & lt; rid & gt;  

प्रश्न:

अब, मेरे पास दो मुख्य समस्याएं / प्रश्न हैं जिन्हें मैं समझ नहीं सकता:

  1. यदि उपर्युक्त क्वेरी क्लास उपयोगकर्ता (उपयोगकर्ता 3) से रिकॉर्ड की एक सूची वापस करती है, तो मैं उपयोगकर्ता (उपयोगकर्ता 3) और उपयोगकर्ता (या प्रॉपर्टी आईडी) के मध्य में उपयोगकर्ता से रिकॉर्ड कैसे प्राप्त कर सकता / सकती हूं? रिश्ते की (उपरोक्त: उपयोगकर्ता 2)

  2. मैं किसी विशिष्ट संपत्ति वाले किनारों के माध्यम से पार करने के लिए क्वेरी (या चयन) को कैसे फ़िल्टर कर सकता हूँ I अधिक विशिष्ट होने के लिए मैं दूसरी प्रश्न पूछना चाहता हूं जो उपयोगकर्ता 1 से हैं, लेकिन वे मित्र के दोस्त हैं: उपयोगकर्ता & lt; - जानता है (method = 'friend') - & gt; उपयोगकर्ता & lt; - जानता है (method = 'friend') - & gt; यूजर

<पी> विटोरेंसडर्ट के सुझाव के अनुसार, मैंने पाया जवाब। हां मुझे किनारों को देखना चाहिए, किनारों से कोने से बाहर ले जाने से, किनारों को फ़िल्टर करना चाहिए, जैसे निम्न:

  विस्तृत करें चुनें (संघ (सभी) (ईई ('जानता है') [method = 'friend' ], OutE ('जानता है') [विधि = 'दोस्त']। में) से & lt; rid & gt;  

इस प्रश्न के साथ समस्या यह है कि मुझे लगता है कि यह अनुकूलित हो सकता है ओरिएंट डीबी के किनारों से किनारों से दोनों तरफ ले जाने के लिए एक फ़ंक्शन होता है, कुछ ऐसा:

  bothE ('knows') [method = 'friend']। दोनों  

लेकिन .both फ़ंक्शन मौजूद नहीं है (कम से कम मेरे द्वारा उपयोग किए जाने वाले संस्करण में, जो 1.7.4 है)। अगर कोई इस बारे में कुछ जानता है, तो कृपया एक टिप्पणी छोड़ दें।


No comments:

Post a Comment