2017-09-01 6 views
0

Utilisation de l'édition communautaire Neo4j 3.2.0.Absence de certaines fonctions scalaires de Neo4j

Les types de propriétés dans Neo4j doivent correspondre aux primitives Java. Pourquoi n'y a-t-il que des fonctions scalaires pour nombre entier (c'est-à-dire pour Integer) et float? Lors de l'importation (LOAD CSV), il serait utile de convertir les chaînes en octets, en shorts et en doubles plutôt que de spécifier des types dans l'en-tête. APOC n'a pas non plus de fonctions scalaires pour ces types. Je m'y attendais puisqu'il y a une grande différence de mémoire entre les types de nombres. Toute raison technique ou solution de contournement (par exemple pour convertir chaîne en octets | court | deux sous CSV charge

En outre, l'outil d'importation permet à tous les types de numéros dans les métadonnées d'en-tête

+0

Lors de l'utilisation des listes d'objets littéraux ressemble entier et flottant sont les seuls chiffres pris en charge. Par exemple, il n'existe aucun moyen de spécifier une propriété en tant qu'octet (par exemple {id: 1, ...} propriété ** id ** est par défaut entier). –

+0

Ressemble à un problème connu https://github.com/neo4j/neo4j/issues/7652 –

+1

Une chose confuse à propos de Neo4j est que les types sont en fait différents de ceux annoncés. Neo4j utilise des valeurs doubles et longues de 64 bits sous le capot (pas des entiers ou des flottants, malgré les noms des fonctions), et utilise quelques astuces d'optimisation pour le stockage si toutes les valeurs de certaines propriétés sont suffisamment faibles. – InverseFalcon

Répondre

0

Je ne sais pas ce que vous voulez dire exactement?. avec types de propriétés doivent correspondre primitives Java. pour autant que je sache, il n'y a aucune obligation de faire quoi que ce soit lorsque vous écrivez un logiciel.

vous pouvez trouver les types Neo4j a et comment ils correspondent aux différentes langues dans cette document: https://neo4j.com/docs/developer-manual/current/drivers/cypher-values/

J'espère que cela aide.

Cordialement, Tom

+0

il y a des fonctions scalaires intégrées dans Cypher pour les entiers et les flottants mais pas les octets, les petits et les doubles que je trouve étranges. Apoc ne comble pas l'écart non plus. Les types de propriétés dans un nœud ou une relation correspondent aux primitives en Java (sauf pour null). –

+0

Neo4j n'a que Boolean, Integer, Float (et String par défaut). Alors pourquoi Cypher aurait-il besoin d'autres fonctions scalaires puisque ce sont les seules que vous pouvez utiliser dans la base de données? Vous prétendez qu'il y a un écart ... mais tout type qui peut être dans la base de données est couvert, alors où est l'écart? –