2016-04-08 17 views
2

Neo4j-jdbc 2.3.2'yi java için neo4j istemcim olarak kullanıyorum.
match(p:Person) where p.id_number='761201948V' return p.id;
numaralı cypher sorgusunu izlediğimde, P2547228 düğüm kimliği olarak dönecektir. Kimliğin diğer özellikleriyle aynı olduğunu hissediyorum.

Ama burada bu sorgu içinde kullanabileceğiniz bir tamsayı bekliyorum START p=node('node.id') return p; Bu kimlik neo4j db için dahili bir şey mi? ve bu kimliği almanın bir yolu var mı? Aşağıdaki iki Cyphers itibaren

en verimli birinin ne?
Neo4j cypher'de tam düğüm kimliğinin geri alınması

  1. START p=node('2547223') return p;
  2. match(p:Person) where p.id='P2547228' return p;

cevap

2

Bunun için ID(x) fonksiyonunu kullanmak zorunda (her ikisi de aynı düğüm atıfta ise). Not, ID(x) ve x.id, tamamen farklı bir şey. İlk, Neo4j tarafından yönetilen iç düğüm/ilişki kimliğini döndürür. İkincisi, veritabanının kendisi tarafından değil, kullanıcı tarafından yönetilen id özelliğini verir. Ayrıca bir düğüm/ilişki kimliğinin her zaman sayısal olduğunu unutmayın. START kullanma

hemen hemen eski okul ve (manuel endeksleri erişen hariç) artık kullanılmamalıdır:

start p=node(2547228) return p 

Bu bir eşdeğer bir ifadedir. Sadece

match(p:Person) where p.id=2547228 return p; 

:

match(p:Person) where id(p)=2547228 return p; 

bir özellik mi arıyorsunuz bir düğüm etiket tarama veya şema dizin araması ya gerektirir: sadece basit bir düğüm deposunda arama işlemi yapması gereken beri yüksek verimli olduğunu PROFILE ile ifadeyi önekleyerek kendi başına sorgu planlarını kontrol edin.

+0

tam olarak ne istiyorum, çok teşekkür ederim ... – Hasitha