J'ai une application de démarrage de printemps où j'ai défini certaines requêtes. Dans d'entre eux, j'aimerais que la base de données suive un horodatage au moment où une certaine requête est tirée et la stocke dans une propriété d'un nœud. Il y a une fonction horodatage () mais je ne peux pas trouver dans les docs quel genre de arguments cela prend et comment l'utiliser correctement.
permet de dire que j'ai cette requête: p>
MATCH (p:Patient) WHERE ID(p) = 1693 MATCH (d:Drug) WHERE ID(d) IN [1671, 1679] CREATE (p)-[:GETS]->(d {givenDate: datetime()})
3 Réponses :
essayez ceci (supposant également qu'il pourrait être préférable de mettre l'horodatage sur la relation) Si vous pensez que l'horodatage doit être sur d p>
Vous pouvez utiliser la clause définie de CYPher pour ajouter de nouvelles propriétés existantes ou de mise à jour d'un nœud
MATCH (p:Patient) WHERE ID(p) = 1693 MATCH (d:Drug) WHERE ID(d) IN [1671, 1679] SET d.givenDate = datetime() CREATE (p)-[:GETS]->(d)
la différence, mesurée en millisecondes, entre l'heure actuelle et minuit, 1er janvier 1970 UTC. C'est l'équivalent de DateTime (). Epochmillis . p> blockQuote>
Votre clause code> Créer code> tente de créer un nouveau nœud avec le nom de la variable
d code>, qui n'est pas autorisé car
d code> est Déjà déclaré (par la clause PRIANT
MATCH CODE>) pour un autre noeud. Je suppose que, cependant, vous ne voulez pas créer de nouveau nœud, mais ajoutez un horodatage au nœud existant
d code> à la place. P>
Cela devrait fonctionner (et GURANTINE que tous les nœuds code> code> sont créés avec la même valeur code> DateTime code>): p>
WITH datetime() AS dt MATCH (p:Patient) WHERE ID(p) = 1693 MATCH (d:Drug) WHERE ID(d) IN [1671, 1679] CREATE (p)-[:GETS {givenDate: dt}]->(d)
Merci beaucoup pour votre réponse, cela a fonctionné. À propos de votre avis, j'ai déjà pris soin de cela. Chaque nœud qui a une relation: obtient n'est plus dans ma fonction de recherche, ce scénario n'est donc pas possible.