Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
neo4j中的自然分选_Neo4j_Cypher - Fatal编程技术网

neo4j中的自然分选

neo4j中的自然分选,neo4j,cypher,Neo4j,Cypher,我们有一组节点,它们的属性在插入期间从大小数转换为字符串,在加载期间从大小数转换为字符串 这会导致分拣过程中出现典型问题。值1、2、3、10按1、10、2、3排序 cypher有没有办法对字符串进行自然排序?或者我们必须将这些属性转换为双精度或类似的东西吗?您可以在字符串长度上添加主排序吗 CREATE ({val:"3"}),({val:"6"}),({val:"9"}),({val:"12"}),({val:"15"}),({val:"18"}),({val:"21"}) MATCH (n)

我们有一组节点,它们的属性在插入期间从大小数转换为字符串,在加载期间从大小数转换为字符串

这会导致分拣过程中出现典型问题。值1、2、3、10按1、10、2、3排序


cypher有没有办法对字符串进行自然排序?或者我们必须将这些属性转换为双精度或类似的东西吗?

您可以在字符串长度上添加主排序吗

CREATE ({val:"3"}),({val:"6"}),({val:"9"}),({val:"12"}),({val:"15"}),({val:"18"}),({val:"21"})
MATCH (n) RETURN n.val ORDER BY n.val
// 12, 15, 18, 21, 3, 6, 9
MATCH (n) RETURN length(n.val), n.val
// 3, 6, 9, 12, 15, 21


如果您不断地来回转换它们,听起来最好将它们作为适当的类型存储在数据库中。

您能在字符串长度上添加主排序吗

CREATE ({val:"3"}),({val:"6"}),({val:"9"}),({val:"12"}),({val:"15"}),({val:"18"}),({val:"21"})
MATCH (n) RETURN n.val ORDER BY n.val
// 12, 15, 18, 21, 3, 6, 9
MATCH (n) RETURN length(n.val), n.val
// 3, 6, 9, 12, 15, 21


如果您不断地来回转换它们,听起来最好将它们作为正确的类型存储在数据库中。

我想最好的方法是将它们作为整数存储在数据库中。另外,在当前的milestone版本中,有一个
toInt()
函数,您可以使用它进行排序

START n=node(*)
WITH toInt(n.stringValue) as nbr
RETURN n
ORDER BY nbr

我想最好的方法是将它们作为整数存储在数据库中。另外,在当前的milestone版本中,有一个
toInt()
函数,您可以使用它进行排序

START n=node(*)
WITH toInt(n.stringValue) as nbr
RETURN n
ORDER BY nbr

我喜欢你的想法,但这对像1.01、1.1、2、2.1这样的价值观并不起作用。至于你的另一句话,afaik不支持大小数,所以我们需要进行转换。我喜欢你的想法,但这对像1.01、1.1、2、2.1这样的值不起作用。至于你的另一句话,afaik不支持BigDecimals,所以我们需要进行转换。将它们存储为double如何?这是可能的,Neo4j支持双属性类型。你也可以使用
toFloat(n.value)将字符串值转换为float
。但是我们仍然使用1.9,所以我想我们现在必须转换属性。是的,只要将它们存储为双精度,就可以了。将它们存储为双精度怎么样?这是可能的,因为Neo4j支持双精度属性类型。您还可以使用
toFloat(n.value)将字符串值转换为浮点值
。但是我们仍然使用1.9,所以我想我们现在必须转换属性。是的,只要将它们存储为双精度,就可以了。