मैं साइफर/ग्राफ डीबी के लिए नया हूँ। मैंने ट्रैवर्सल को समझने के लिए एक उदाहरण बनाया लेकिन इसे काफी नहीं मिला।

//Cypher below to create nodes.
(`0` :Person {id:'74474',Name:"Mr. Dan"}) ,
  (`1` :Company {id:'1234',Name:"Company A"}) ,
  (`2` :Company {id:'1111',Name:"Company B"}) ,
  (`3` :Person {id:'0844',Name:"Mr.X"}) ,
  (`4` :Person {id:'3455',Name:"Mr. Jack"}) ,
  (`5` :Person {id:'748222',Name:"Mr.Y"}) ,
  (`0`)-[:`owns` {amt:'50%'}]->(`1`),
  (`4`)-[:`owns` {amt:'30%'}]->(`1`),
  (`2`)-[:`owns` {amt:'20%'}]->(`1`),
  (`3`)-[:`owns` {amt:'30%'}]->(`2`),
  (`5`)-[:`owns` {amt:'70%'}]->(`2`)
// end

प्रश्न: MATCH (p:Person)-[o:owners*]->(c: Company) जहां c.Name="कंपनी ए" रिटर्न पी, ओ //

यह मुझे "कंपनी ए" के मालिक सभी "व्यक्ति" देता है लेकिन मैं प्रत्येक व्यक्ति का "% स्वामित्व" प्राप्त करना चाहता हूं।

मैं रिश्ते "ओ" में मूल्यों को निकालने या एकत्रित करने के लिए प्रतीत नहीं कर सकता। आसान लग रहा था लेकिन मुझे चुनौती लग रही है!

कोई सुझाव?

-2
DP_monk 28 पद 2017, 19:13

1 उत्तर

सबसे बढ़िया उत्तर

एक के लिए, यदि आप एक स्ट्रिंग मान के बजाय संख्यात्मक मानों का उपयोग करते हैं, तो अपनी स्वामित्व राशियों को गुणा करना आसान होगा। उन्हें '50%' के बजाय दशमलव प्रारूप में होना चाहिए, .5

पथ में सभी राशियों को गुणा करने के लिए REDUCE() का उपयोग करके शायद कुछ इस तरह का प्रयास करें (अपने एएमटी मानों को फ़्लोट में बदलने के बाद):

MATCH (p:Person)-[owns:owns*]->(c:Company) 
WHERE c.Name="Company A"
RETURN p, reduce(amt = 1, o in owns | amt * o.amt) as percentOwned

ध्यान रखने वाली बात यह है कि एक चर-लंबाई के संबंध पर एक चर (जहां हम * का उपयोग करते हैं) संबंधों के एक संग्रह को संदर्भित करेगा, एक भी संबंध नहीं।

0
InverseFalcon 28 पद 2017, 22:56