es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Consulta de Cypher / Neo4j que obtiene nodos con relaciones múltiples específicas.

Estoy trabajando en una aplicación organizadora de aplicaciones. Tiene elementos con etiquetas Item y etiquetas con la etiqueta Tags. Los elementos pueden tener hasta cinco etiquetas.

(i:Item)-[:HAS]->(t:Tag)

Estoy utilizando PHP para hacer esto, por lo que idealmente podría concatenar la consulta:

$tags = $this->getParam(“tags”); // separado por comas u otro separador

if ($tags != null) {
$arrayTags = explode(“;”, $tags ,5);

  $queryAddTagSpecifiers = "";

  for ($i=0;$i<count($arraytags);$i++) {="" $queryaddtagspecifiers.=" MATCH (t:Tag {name:'" .$arraytags[$i]."'})<-[:has]-(i:item)";="" }="" $query="MATCH (t:Tag)<-[:HAS]-(i:Item)-[:OWNED]->(u:User) 
           " .$queryaddtagspecifiers."="" where="" u.id='" . $this->userId . "' return="" i";="" echo="" $query;="" }="" estoy="" intentando="" escribir="" una="" consulta="" match="" para="" obtener="" elementos="" con="" múltiples="" etiquetas.="" para="" una="" sola="" etiqueta="" funciona.="" imagen:="" [enlace="" a="" imagen](https://i.stack.imgur.com/yaci8.png)="" he="" intentado="" varias="" variantes="" de="" esto:="" match="" (i:item)-[:owned]-="">(u:User) MATCH (t:Tag {name:'house'})<-[:HAS]-(i:Item) MATCH (t:Tag {name:'image222'})<-[:HAS]-(i:Item) WHERE u.id='1640793954DANYXV4RW8EFZLIJNUMC' RETURN i

También utilicé WHERE t.name=’house AND t.name=’image222′, pero no tuve suerte, probablemente porque son mutuamente excluyentes.

Cualquier ayuda es apreciada.</count($arraytags);$i++)>

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para obtener un elemento con múltiples etiquetas, puedes utilizar la siguiente consulta:

    MATCH (i:Item)-[:HAS]->(t1:Tag {name: 'house'})
    MATCH (i)-[:HAS]->(t2:Tag {name: 'image222'})
    WHERE size((i)-[:HAS]->(:Tag)) = 2
    RETURN i
    

    Esta consulta utiliza dos cláusulas MATCH para encontrar elementos con ambas etiquetas. Luego, la cláusula WHERE verifica que el elemento tenga exactamente dos etiquetas. Esto asegura que el elemento tenga ambas etiquetas y no solo una de ellas. Finalmente, la consulta devuelve el elemento.

    Puedes modificar esta consulta para encontrar elementos con más de dos etiquetas agregando más cláusulas MATCH y cambiando la verificación de tamaño en consecuencia.

Comments are closed.