如何解决neo4j数据库中的-:(字符串不是有效的坐标类型)错误

如何解决neo4j数据库中的-:(字符串不是有效的坐标类型)错误,neo4j,cypher,Neo4j,Cypher,我正在使用neo4j数据库,我对使用节点非常陌生,但突然我在一个查询中出错。我无法解决这个问题。我花了8个小时来解决它,但仍然没有得到任何解决方案。我在服务器端使用nodejs 我的Neo4j查询: MATCH (a : User)-[p : POSTS]->(b), (b)-[category : category]->(categoryNode : Category) WITH a, p, b, categoryNode, toFloat(distance (point({la

我正在使用neo4j数据库,我对使用节点非常陌生,但突然我在一个查询中出错。我无法解决这个问题。我花了8个小时来解决它,但仍然没有得到任何解决方案。我在服务器端使用nodejs

我的Neo4j查询:

MATCH (a : User)-[p : POSTS]->(b), (b)-[category : category]->(categoryNode : Category) 
WITH a, p, b, categoryNode, toFloat(distance (point({latitude : 23.0751926, longitude : 72.5256395}), 
 point({latitude : b.latitude, longitude : b.longitude})) / 1000) as distance 
WHERE (b.banned <> 1 OR NOT EXISTS(b.banned)) AND (distance <= 30) 
 AND (NOT EXISTS(b.sold) OR b.sold = 0) AND (b.latitude IS NOT NULL AND b.longitude IS NOT NULL) 
 AND (EXISTS (b.priceInUSD) OR b.priceInUSD IS NOT NULL) 
OPTIONAL MATCH (commentsBy : User)-[c : Commented]->(b) 
RETURN DISTINCT a.username AS username, a.fullName AS fullName,
 a.profilePicUrl AS profilePicUrl, toInt(p.postedOn) AS postedOn, 
 p.type AS postsType, b.postId AS postId, b.productsTagged AS productsTagged, 
 b.place AS place, b.latitude AS latitude, b.longitude AS longitude, b.city AS city, 
 b.countrySname AS countrySname, b.mainUrl AS mainUrl, 
 b.thumbnailImageUrl AS thumbnailImageUrl, b.postCaption AS postCaption, b.hashTags AS hashtags, 
 b.imageCount AS imageCount, b.containerHeight AS containerHeight, 
 b.containerWidth AS containerWidth, b.productsTaggedCoordinates AS productsTaggedCoordinates, 
 b.hasAudio AS hasAudio, categoryNode.name AS category, categoryNode.mainUrl AS categoryMainUrl, 
 categoryNode.activeImageUrl AS cateoryActiveImageUrl, toFloat(b.priceInUSD) / 0.01623113104640268 AS price, 
 "HTG" AS currency , toInt(b.priceInUSD) AS priceInUSD, b.productName AS productName, 
 b.likes AS likes, b.thumbnailUrl1 AS thumbnailUrl1, b.imageUrl1 AS imageUrl1, 
 b.containerHeight1 AS containerHeight1, b.containerWidth1 AS containerWidth1, 
 b.imageUrl2 AS imageUrl2, b.thumbnailUrl2 AS thumbnailUrl2, b.containerHeight2 AS containerHeight2, 
 b.containerWidth2 AS containerWidth2, b.thumbnailUrl3 AS thumbnailUrl3, 
 b.imageUrl3 AS imageUrl3, b.containerHeight3 AS containerHeight3, 
 b.containerWidth3 AS containerWidth3, b.thumbnailUrl4 AS thumbnailUrl4, 
 b.imageUrl4 AS imageUrl4, b.containerHeight4 AS containerHeight4, b.containerWidth4 AS containerWidth4, 
 COLLECT (DISTINCT {commentBody : c.comments, commentedByUser : commentsBy.username, 
  commentedOn : c.createTime, commentId : ID(c)})[0..5] AS commentData, distance 
ORDER BY distance ASC, priceInUSD ASC, postedOn DESC 
SKIP 0 LIMIT 20;

b.latitude
b.longitude
值可能是字符串(不是浮点数),它们对于坐标来说是无效的类型

尝试更改此代码段:

point({latitude : b.latitude, longitude : b.longitude})
为此:

point({latitude : TOFLOAT(b.latitude), longitude : TOFLOAT(b.longitude)})

(或者,为了更有效:首先将这些属性值更改为浮点数)。

b.latitude和
b.longitude
值可能是字符串(而不是浮点数),它们不是坐标的有效类型

尝试更改此代码段:

point({latitude : b.latitude, longitude : b.longitude})
为此:

point({latitude : TOFLOAT(b.latitude), longitude : TOFLOAT(b.longitude)})

(或者,为了更有效:首先将这些属性值更改为浮点数)。

您使用的是哪一版本的Neo4j?@InverseFalcon我使用3.1.1作为所有
b
节点,
b.latitude
b.longitude
是否有任何字符串类型?您使用的是哪个版本的Neo4j?@InverseFalcon我正在使用3.1.1对于所有
b
节点,是否有
b.latitude
b.longitude
的字符串类型?太好了。请记住对你的问题的回答对你来说最合适。太好了。请记住对你的问题的回答对你最合适。