2017-10-03 5 views
1

je le script suivant dans le Neo4jRécupération du noeud avec plusieurs auteurs avec des articles publiés dans le Neo4j

CREATE (PaperA:Paper {title:'User Experience of Mobile Augmented 
Reality: A Review of Studies'}) CREATE (Irshad:Autor {name:'S. 
Irshad'}) CREATE (Rambli:Autor {name:'D. Rohaya Bt Awang Rambli'}) 

CREATE(PaperB:Paper {title:'Quality of Experience in the Multimedia 
Internet of Things: definition and practical use cases'}) 
CREATE(Floris:Autor {name:'A. Floris'}) CREATE(Atzori:Autor {name:'L. 
Atzori'}) 

CREATE(PaperC:Paper {title:'What Changes from Ubiquitous Computing to 
Internet of Things in Interaction Evaluation?'}) CREATE(Andrade:Autor 
{name:'Andrade, R. M.'}) CREATE(Carvalho:Autor {name:'Carvalho, R. 
M.'}) CREATE(deAraújo:Autor {name:'de Araújo, I. L.'}) 
CREATE(Oliveira:Autor {name:'Oliveira, K. M.'}) CREATE(Maia:Autor 
{name:'Maia, M. E'}) 


CREATE(PaperD:Paper {title:'A QoE-aware Approach for Smart Home Energy 
Management'}) CREATE(Meloni:Autor {name:'Meloni, A'}) 
CREATE(Pilloni:Autor {name:'Pilloni, V.'}) 

(Irshad)-[:IS_AUTHOR]->(PaperA), (Rambli)-[:IS_AUTHOR]->(PaperA), 
(Floris)-[:IS_AUTHOR]->(PaperB), (Floris)- [:IS_AUTHOR] -> (PaperD), 
(Floris)- [:IS_AUTHOR] -> (PaperH), (Atzori)-[:IS_AUTHOR]->(PaperB), 
(Atzori)- [:IS_AUTHOR] -> (PaperD), (Atzori)- [:IS_AUTHOR] -> 
(PaperH), (Meloni)-[:IS_AUTHOR]->(PaperD), 
(Pilloni)-[:IS_AUTHOR]->(PaperD), (Andrade)-[:IS_AUTHOR]->(PaperC), 
(Carvalho)-[:IS_AUTHOR]->(PaperC), (deAraújo)-[:IS_AUTHOR]->(PaperC), 
(Oliveira)-[:IS_AUTHOR]->(PaperC), (Maia)-[:IS_AUTHOR]->(PaperC), 

comme un script Id qui renvoient les auteurs avec des papiers plus publiés, qui, dans ce cas est Floris et Atzori. J'utilise la version 3.0.8 de Neo4J.

Merci beaucoup.

+0

Bonjour @gPxl. J'ai édité ma réponse pour supprimer une clause "WITH" non nécessaire. –

+0

Bonjour, @BrunoPeres, je reçois toujours le message: WITH est nécessaire entre CREATE et MATCH (ligne 156, colonne 1 (offset: 6405)) "MATCH (a: Autor) - [r: IS_AUTHOR] -> (: Papier) " ^ – gPxl

+0

J'ai modifié ma réponse. S'il vous plaît, jetez un oeil. –

Répondre

1

EDIT:

modifié pour répondre correctement aux exigences de la question:

// First step: getting the greatest number of publications by author 
MATCH(author:Autor)-[r:IS_AUTHOR]->(:Paper) 
WITH author, count(r) as count 
ORDER BY count DESC LIMIT 1 
// Second step: getting all author who have number 
// of publications equals to `count` 
MATCH (a:Autor)-[r:IS_AUTHOR]->(p:Paper) 
WITH a, count, count(r) AS r WHERE r = count 
RETURN a 

La sortie sera:

╒════════════════════╕ 
│"a"     │ 
╞════════════════════╡ 
│{"name":"A. Floris"}│ 
├────────────────────┤ 
│{"name":"L. Atzori"}│ 
└────────────────────┘ 
+0

Merci, mais j'ai le message suivant "WITH est requis entre CREATE et MATCH (ligne 155, colonne 1 (offset: 6404)) " MATCH (auteur: Autor) - [r: IS_AUTHOR] -> (: Papier) " ^" – gPxl

+0

@gPxl Cela est dû au fait que vous exécutez la requête dans le même script que celui qui crée votre ensemble de données initial. Si vous avez exécuté la requête publiée dans cette réponse séparément, tout fonctionnera. –

+0

merci beaucoup! Ça marche! Pourquoi j'ai séparé les requêtes? – gPxl