सबसे पहले, संग्रह और उनकी सामग्री को आपके द्वारा निर्दिष्ट तरीके से बनाने दें। हम एक दूसरा उपयोगकर्ता जोड़ देंगे।
db._createEdgeCollection("userPreferences")
db._createEdgeCollection("dishTags")
db.userPreferences.save("user/user1", "tags/sweet", {score: 4})
db.userPreferences.save("user/user1", "tags/chocolate", {score: 11})
db.userPreferences.save("user/user2", "tags/sweet", {score: 27})
db.userPreferences.save("user/user2", "tags/vanilla", {score: 7})
db.dishTags.save("tags/sweet", "dishes/item2", {score: 4});
db.dishTags.save("tags/sweet", "dishes/item3", {score: 7})
db.dishTags.save("tags/chocolate", "dishes/item2", {score: 2})
db.dishTags.save("tags/vanilla", "dishes/item3", {score: 3})
db.dishTags.save("tags/spicy", "dishes/item1", {score: 666})
हमारे संबंधों इस तरह हैं::
user-[userPreferences]->tags-[dishTags]->dishes
जानने क्या user1
पसंद इस क्वेरी के साथ किया जा सकता है:
db._create("user")
db._create("tags")
db._create("dishes")
db.user.save({_key: 'user1'})
db.user.save({_key: 'user2'})
db.tags.save({_key: 'sweet'})
db.tags.save({_key: 'chocolate'})
db.tags.save({_key: 'vanilla'})
db.tags.save({_key: 'spicy'})
db.dishes.save({_key: 'item1'})
db.dishes.save({_key: 'item2'})
db.dishes.save({_key: 'item3'})
अब उनके किनारों के साथ बढ़त संग्रह बनाने की सुविधा देता है
FOR v, e IN 1..2 OUTBOUND "user/user1" userPreferences, dishTags
RETURN {item: v, connection: e}
,210
अगर आप अब सभी व्यंजनों कि user1
सबसे अच्छा पसंद करती है पता लगाना चाहते हैं:
FOR v, e IN 2..2 OUTBOUND "user/user1" userPreferences, dishTags
FILTER e.score > 4 RETURN v
हम score
विशेषता के लिए फ़िल्टर करें।
अब हम किसी अन्य उपयोगकर्ता एक ही वरीयताओं है कि के रूप में user1
करता है पता लगाना चाहते हैं:
FOR v, e IN 2..2 ANY "user/user1" userPreferences RETURN v
हम ANY
दिशा (आगे और पीछे) में जाते हैं, लेकिन केवल किसी और userPreferences
बढ़त संग्रह में रुचि रखते हैं, 2 ..2 भी व्यंजन का उपयोग करेगा। जिस तरह से हम इसे करते हैं। हम समान प्राथमिकताओं वाले उपयोगकर्ताओं को ढूंढने के लिए उपयोगकर्ता संग्रह में वापस जाते हैं।
फॉक्सक्स-सेवा बनाना चाहे या नहीं, एक अच्छा विकल्प व्यक्तिगत वरीयताओं पर निर्भर करता है। फॉक्सक्स बहुत अच्छा है यदि आप & सर्वर पक्ष पर फ़िल्टर परिणाम जोड़ना चाहते हैं, तो क्लाइंट संचार कम है। यदि आप डीबी-प्रश्नों की तुलना में माइक्रोस्कोप के शीर्ष पर अपना आवेदन रखना चाहते हैं तो आप इसका भी उपयोग कर सकते हैं। आपका एप्लिकेशन तब डेटाबेस विशिष्ट कोड से मुक्त रह सकता है - यह केवल operates with the microservice इसके बैकएंड के रूप में है। ऐसे उपयोगकाज हो सकते हैं जहां फॉक्सएक्स
सामान्यतः, कोई "सही" तरीका नहीं है - प्रदर्शन, कोड स्वच्छता, स्केलेबिलिटी इत्यादि के कारण आप विभिन्न तरीकों से बेहतर हो सकते हैं।
मैं अरंगोडब के साथ एक खाद्य अनुशंसा इंजन कर रहा हूं, संपर्क में रहना चाहता हूं और उस बारे में बात करना चाहता हूं? –
ज़रूर! जीमेल पर स्टेलेमेट पर मुझे ईमेल करें। –