Neo4js中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

我将一个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 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表。