Neo4J को आईडी द्वारा नोड मिलता है


84

मैं अपने एक प्रोजेक्ट के लिए neo4j का उपयोग कर रहा हूं, एक नोड है जिसमें केवल एक ही संपत्ति है name, मैं आईडी का उपयोग करके उस नोड को प्राप्त करना चाहता हूं, इसमें पहले से ही एक आईडी है लेकिन जब मैं इस कोड का उपयोग करता हूं

MATCH (s:SKILLS{ID:65110}) return s

यह कुछ भी नहीं लौटाता है, मेरे नोड को पा लेता है

यहां छवि विवरण दर्ज करें

यदि क्वेरी गलत है, तो मैं संख्या का उपयोग करके इसे कैसे क्वेरी कर सकता हूं


आप किस ग्राफ विज़ुअलाइज़िंग टूल का उपयोग करते हैं? धन्यवाद। मुझे पता है कि yworks.com/neo4j-explorer अनुकूलन के लिए अच्छा विकल्प है।
MyUserInStackOverflow

जवाबों:


136
MATCH (s)
WHERE ID(s) = 65110
RETURN s

IDसमारोह आप एक नोड या रिश्ते की आईडी हो जाता है। यह किसी भी संपत्ति कहा जाता है से अलग है idया IDआपके द्वारा बनाए जाने।


1
क्या डेटा प्राप्त करने का कोई अलग तरीका है (s: SomeLabel {id: 65110})?
डोंकिगॉन्ग

@ डॉन्कीकॉन्ग नहीं, क्योंकि आप आईडी प्रॉपर्टी भी जोड़ सकते हैं, जो आईडी के अलावा कुछ और है। एक आईडी प्रॉपर्टी किसी भी प्रकार की हो सकती है, जबकि नोड या एज आईडी एक अहस्ताक्षरित पूर्णांक है, जो नियोक्जे की आंतरिक संरचना में एक स्थान से जुड़ा हुआ है।
पोवोस्टेन

25
मानक अस्वीकरण: लंबी अवधि की इकाई पहचान के लिए आंतरिक Neo4j आईडी का उपयोग न करें। Neo4j के भविष्य के संस्करण प्रदर्शन उद्देश्यों के लिए इन आईडी को चारों ओर स्थानांतरित कर सकते हैं। CONSTRAINTट्रैकिंग संस्थाओं के लिए अपनी विशिष्ट आईडी प्रॉपर्टी (आदर्श रूप से ) बनाएं
ब्रायन अंडरवुड

यदि कोई दिलचस्पी रखता है तो आधिकारिक साइबर
Ziemowit Stolarczyk

13

चेतावनी: निम्नलिखित उत्तर गलत है! लीगेसी इंडेक्स को एक्सेस करते समय केवल START का उपयोग किया जाना चाहिए । यह Cypher 2.2 और इसके बाद के संस्करण में अक्षम है

Neo4j का उपयोग करने की अनुशंसा करता हैWHERE ID(n) = , और इसके अलावा यह बताता है कि इसे केवल एक ही लुकअप की आवश्यकता होगी (मिलान आईडी को खोजने के लिए प्रत्येक नोड को स्कैन नहीं करता है)

किसी को एक ही गलती करने से रोकने के लिए यह उत्तर देना।

आप उपयोग कर सकते हैं WHERE ID(s) = 65110, लेकिन यह आपके डेटाबेस में प्रत्येक नोड की आईडी की जांच करेगा।

ऐसा करने के लिए एक अधिक कुशल तरीका है:

START s=NODE(517) MATCH(s) RETURN s

एक सरल क्वेरी के लिए EXPLAIN और PROFILE के परिणामों ने मुझे दिखाया कि @ कोड सही था। यह डॉक्स में क्यों नहीं है?
सोनाटा

@Sonata आप किस संस्करण को चला रहे हैं? Neo4j के नए संस्करणों को START अप्रचलित बनाना चाहिए।
कोडबेलिंग

3.0.7। पर एक नज़र डालें Result Detailsकंसोल में इन उदाहरणों से: console.neo4j.org/r/dbz1we (एक AllNodesScan कर रही है) और console.neo4j.org/r/9076wd (एक NodeById कर रही है)
सोनाटा

@ सोनाटा मुझे यकीन नहीं है कि ऐसा क्यों हो रहा है। सबसे पहले, यह काम नहीं करना चाहिए - डॉक्स यह बताता है कि START को Cypher 2.0 के रूप में चित्रित किया गया है और Cypher 2.2 के रूप में अक्षम किया गया है, लेकिन यह अभी भी स्पष्ट रूप से काम कर रहा है। सभी में से दूसरा, आईडी के साथ MATCH +NodeByIdSeekकेवल एक नोड तक पहुंच होना चाहिए लेकिन किसी कारण से यह कर रहा है +AllNodesScan
कोडबेलिंग

4

तुम कह सकते हो:

(n:User) where id(n) >=20 RETURN n

यह 20 से अधिक नोड संदर्भ आईडी के साथ उपयोगकर्ता के सभी नोड्स लौटाएगा

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.