Comment gérer les dates dans neo4j
Je suis un historien de l'histoire médiévale et je suis en train de code de réseaux entre les rois, les ducs, les papes etc. sur une période de temps d'environ 50 ans (à partir de 1220 à 1270) dans l'Allemagne médiévale. Comme je ne suis pas un spécialiste de graphique, bases de données, je suis à la recherche d'une possibilité de gérer les dates et la date-plages.
Existe-il des possibilités pour gérer plus d'une date à une arête de sorte que les bords, ce qui représente une relation, disparaît après avoir par exemple 3 ans?
Il y a aucune possibilité de demander que les relations qui ont leur date de tag une date?
OriginalL'auteur Andreas Kuczera | 2015-03-30
Vous devez vous connecter pour publier un commentaire.
La commune de la façon de traiter avec des dates dans Neo4j est de les stocker soit comme une représentation de chaîne ou de millis depuis l'époque (aka millisecondes écoulées depuis 01 Jan 1970).
La première approche rend le graphique plus lisible cette dernière vous permet de faire des maths par exemple, calculer les deltas.
Dans votre cas, je serais stocker deux propriétés appelé
validFrom
etvalidTo
sur les relations. Vous avez des requêtes devez vous assurer que vous êtes à la recherche pour l'intervalle de temps approprié.E. g. trouver le roi(s) en charge de la France à partir de 01 Jan 1220 pour le 31 Décembre 1221 vous n':
additif
Depuis Neo4j 3.0 il y a de l'APOC bibliothèque qui fournit couple de fonctions permettant de convertir les horodatages pour/à partir de lisible par l'homme date de chaînes.
Malheureusement, une telle fonction de conversion n'existe pas encore. Si vous avez besoin de le faire sur le côté client.
Si vous écrivez vos dates que "1220-02-05" vous pouvez utiliser l'ordre lexicographique dans la clause where.
Vous rock! Je reçois toujours des plus utiles et des informations précises à partir de presque toutes les réponses que vous donnez et aujourd'hui, je voulais juste dire merci. longue vie à!
merci pour votre gentil mot 🙂
OriginalL'auteur Stefan Armbruster
Vous pouvez également stocker les dates dans leur représentation en nombre dans le format suivant:
YYYYMMDD
Dans votre cas
12200101
serait le 1er janvier 1220 et12701231
serait le 31 Décembre 1270.C'est utile et sous une forme lisible et vous pouvez effectuer des recherches comme:
Il serait également vous permettent de commander par dates, si vous en avez besoin.
Bonjour, je suis en train d'essayer votre date-type, mais neo4j est livré avec une erreur: vous Ne savez pas comment faire pour comparer. À Gauche: "12230500" (Chaîne De Caractères); À Droite: 12290225 (Long) -- Une Idée ?
Oui @AndreasKuczera, votre premier objet doit être Longue. Vous devez les stocker longs et l'utilisation longs tant que paramètres pour les requêtes
Je suis juste le stockage de toutes les valeurs de la même manière:
MATCH (from {id:line.id1}), (to {id:line.id2}) create from-[:NEGATIV{reltype:line.rel1, datum:line.date, datenorm:line.datenorm, vorgID:line.vorgID}]->to;
Ne sais pas pourquoi neo4j enregistre un numéro tant, et l'autre comme une chaîne de caractères. Comment puis-je forcer le stockage sous forme de temps ?Le numéro est stocké avec datenorm.
OriginalL'auteur Amin Abu-Taleb
Comme de Neo4J 3.4, le système gère la durée et les dates, voir le la documentation officielle. Voir plus d'exemples ici.
Un exemple lié à la question d'origine: Récupérer l'historique des événements qui s'est passé dans les derniers 30 jours à partir de maintenant :
OriginalL'auteur loopasam
Une autre option pour les dates qui maintient le nombre de nœuds/propriétés de vous créer assez faible est une liste liée ans (première année d'intérêts - dernière année), l'un des mois (1-12), et l'une des dates dans un mois (1-31). Puis, à chaque "événement" dans votre graphique peut être connecté à une année, le mois et le jour. De cette façon, vous n'avez pas à créer un nouveau nœud pour chaque nouvelle combinaison d'une année, mois et jour. Vous venez d'avoir un ensemble unique de mois, l'un des jours et un an. Je échelle les chiffres pour rendre la manipulation plus facile comme
Ans sont aaaa*10000
Mois sont en mm*100
Date dd
donc, si vous exécutez une requête telle que
Vous obtiendrez une liste de tous les événements dans l'ordre chronologique avec les dates comme Janurary 17, 1904 apparaissant comme 19040117 (format aaaammjj)
Plus loin, puisque ce sont des listes liées, par exemple,
...-(t0:temps {num:19040000})-[:précède]->(t1:temps {num:19050000})-...
la commande est intégrée dans les nœuds trop.
Ce est, jusqu'à présent, comment suis-je aimé faire mon événement datant
Certainement, que voudriez-vous me préciser?
J'ai trouvé cet article... neo4j.com/blog/moving-relationships-neo4j
Je l'ai utilisé comme base pour créer une liste liée depuis des mois, cependant, en suivant les instructions de cet article, de mes relations pour "SUIVANT" n'ont pas été étiquetés comme prochaine, mais au lieu marqué par l'ID de la relation. Peut-être que c'est sans conséquence. Dans mon graphe DB, j'ai des nœuds pour de nouvelles histoires, et des entreprises, avec un MENTIONNE relation pour indiquer les magasins mention d'une entreprise. Je veux aussi avoir la relation à la date à laquelle l'article a été écrit. Alors, comment serait mon Année, Mois, Jour des listes liées travailler ensemble pour s'adapter à chaque histoire, c'est ce que je ne comprends pas encore. Merci!
mmm, écrémé l'article et il semble qu'il s'exécute de la tangente à vos desiderata, à moins que vous développer un besoin de relations pour être en mesure de se propager à travers les listes chaînées. Les listes liées, en général, sont un peu plus simple dans la théorie et dans votre cas d'utilisation particulier. Tout d'abord, la Liste de l'identificateur de nœud n'est pas tout à fait nécessaire comme nœud étiquettes d'obtenir le même effet.
OriginalL'auteur Tshimanga