Neo4js中GUID的匹配
我将一个CSV转储从MS SQL导入Neo4j。其中一个节点有一个GUID作为主键,但当我尝试进行匹配时,尽管有行,但没有结果 我尝试了以下查询:Neo4js中GUID的匹配,neo4j,cypher,Neo4j,Cypher,我将一个CSV转储从MS SQL导入Neo4j。其中一个节点有一个GUID作为主键,但当我尝试进行匹配时,尽管有行,但没有结果 我尝试了以下查询: MATCH (n:User) where n.UserId = "006cbcc9-7452-4bd3-a1da-c9f96fb15ff9" RETURN n LIMIT 25 结果是: Returned 0 rows in 11 ms. 但是,当我对这个特定用户的名字运行查询时,我确实得到了一个结果: MATCH (n:User) where
MATCH (n:User) where n.UserId = "006cbcc9-7452-4bd3-a1da-c9f96fb15ff9" RETURN n LIMIT 25
结果是:
Returned 0 rows in 11 ms.
但是,当我对这个特定用户的名字运行查询时,我确实得到了一个结果:
MATCH (n:User) where n.FirstName = "Bob" RETURN n LIMIT 25
如您所见,UserId与我尝试查找的用户名匹配:
UserId 006cbcc9-7452-4bd3-a1da-c9f96fb15ff9
FirstName Bob
LastName The Builder
那么,通过
UserId
匹配我的查询应该是什么样的呢?我可以看到两个潜在的原因:
1) 属性值中有一些隐藏字符要验证这一点,请运行:
MATCH (n:User) where n.FirstName = "Bob"
RETURN n.UserId, n.UserId='006cbcc9-7452-4bd3-a1da-c9f96fb15ff9',
n.FirstName, n.LastName
LIMIT 25
在第二列中,返回一个false
,那么您的UserId
中可能有一些其他不可见字符
2) 可能性要小得多:假设您对
:User
和UserId
有唯一的约束。也许-出于一个奇怪的原因-你的索引被破坏了。尝试删除它并重新创建。UserId和UserId=''列都是空的。修改,将键(n)
返回并发送输出。我的理论是,您的CSV转储a)有BOM b)您正在使用带有标题的,c)UserId
是您的第一列-请检查。如果是这样,请对csv进行一些预处理以去除BOM。更准确地说,请修改键(n)中的“UserId”
键(n)中的“UserId”
返回false。我使用的是CSV转储,是的,UserID
是我的第一列,我使用的是带有标题的,因此请检查您的CSV是否包含BOM表,确保它确实包含BOM表。