Ho le seguenti due tipi di nodi:Ottenere i nodi che non hanno certo rapporto (Cypher/Neo4j)
c:City {name: 'blah'}
s:Course {title: 'whatever', city: 'New York'}
Guardando per creare questa:
(s)-[:offered_in]->(c)
Sto cercando di ottenere tutti i corsi che NON sono legati alle città e creano il rapporto con la città (la città viene creata se non esiste). Tuttavia, il problema è che il mio set di dati è di circa 5 milioni di nodi e qualsiasi query che faccio timeout (a meno che non lo faccia in incrementi di 10k).
... qualcuno ha qualche consiglio?
EDIT:
Ecco una domanda per i lavori sto correndo ora (che deve essere fatto in 10k pezzi (di milioni) perché ci vuole qualche minuto in quanto è crea città, se doesn. 't esiste):
match (j:Job)
where not has(j.merged) and has(j.city)
WITH j
LIMIT 10000
MERGE (c:City {name: j.city})
WITH j, c
MERGE (j)-[:in]->(c)
SET j.merged = 1
return count(j)
(per ora non sanno di un buon modo per filtrare quelle già abbinati, in modo da cercare di farlo contrassegnando con custom 'fuse' attributo che ho già un indice su)
Puoi condividere ciò che stai attualmente cercando? – JohnMark13
Non penso che questo possa essere risolto senza più contesto (e facendo corrispondere la tua domanda al tuo aggiornamento, presumo job == course e in == offered_in). Stai operando su dati esistenti o si tratta di un'importazione in blocco? Potresti dirci qualcosa sulla configurazione del tuo sistema? Invece di "unire" puoi usare WHERE NOT (j) - [: in] ->(). – JohnMark13
Stai vedendo il timeout attraverso l'interfaccia del browser? –