En Neo4j nous pouvons faire: startNode(relationship), endNode(relationship)
et il va nous donner le début et la fin du noeud donné une relation.Neo4j fonctions scalaires en C#
Mon exemple de requête est la suivante:
match p=(n1 {Identifier:<id>})-[:r1|r2*2]-(n2) unwind relationships(p) as rel return distinct startNode(rel) as n1, type(rel), endNode(rel) as n2
donc en gros ses une relation de longueur variable et je peux obtenir le type, ainsi que le noeud de début et de fin de chaque relation.
Si je ne spécifie pas startNode ou endNode, j'obtiendrai des noeuds supplémentaires qui ne sont pas réellement connectés les uns aux autres.
Cela fonctionne parfaitement bien dans le chiffrement neo4j mais je ne sais pas comment faire startNode et endNode (fonctions scalaires) en C#.
Actuellement, j'ai ceci:
var data = client.Cypher.Match("(n1)")
.Where((Node n1) => n1.Identifier == identifier)
.OptionalMatch("p=(n1)-[:r1|r1*2"]-(n2)")
.Unwind("relationships(p)", "rel")
.ReturnDistinct((n1, rel, n2) => new
{
startNode = n1.As<Node<string>>(),
endNode = n2.As<Node<string>>(),
relationship = rel.As<RelationshipInstance<object>>()
}).Results;
C'est pas faire les fonctions startNode et nœud terminal et donc j'obtenir les supplémentaires nœuds-relations qui ne sont pas réellement connectés les uns aux autres
Toutes les idées sur comment réaliser les fonctions startNode et endNode dans le client C# neo4j?
J'ai oublié de mettre à jour cette réponse mais c'est exactement ce que j'ai fait il y a 3 jours. Merci quand même –
Il y a une autre question que j'aimerais ajouter, y a-t-il un moyen de formater la requête avec params où les paramètres ne font pas partie d'une requête neo4j intégrée? c'est-à-dire, je sais que je pourrais faire avecParams sur une clause where, ou une propriété d'un nœud. Mais je ne peux pas utiliser withParams sur le * .. 2 numéro 2 dans cette expression. Comme les niveaux profonds je veux traverser le graphique. Ma seule solution est d'utiliser string.format mais cela est vulnérable aux attaques d'injeciton ...? –
Non mais c'est une limitation Neo, les paramètres ne fonctionnent pas là: - / –