Database 如何基于大量名称列表在neo4j数据库中查找节点
所以我使用neo4j数据库,我想在这个数据库中找到一些人。人员存储为节点,并具有某些属性以及与其他节点的关系。现在我有了一个我想找的人的列表(xlsm/csv文件)。此列表包含大约8000个名称以及我可以用于查询的其他属性 我通过使用列表中的单个名称来搜索节点,例如:Database 如何基于大量名称列表在neo4j数据库中查找节点,database,neo4j,cypher,graph-theory,cypher-3.1,Database,Neo4j,Cypher,Graph Theory,Cypher 3.1,所以我使用neo4j数据库,我想在这个数据库中找到一些人。人员存储为节点,并具有某些属性以及与其他节点的关系。现在我有了一个我想找的人的列表(xlsm/csv文件)。此列表包含大约8000个名称以及我可以用于查询的其他属性 我通过使用列表中的单个名称来搜索节点,例如: MATCH (n) WHERE n.name = 'Peter' RETURN n.name, n.age 我还了解,我可以查看属性是否出现在字符串列表中: MATCH (a) WHERE a.name IN ['Pete
MATCH (n)
WHERE n.name = 'Peter'
RETURN n.name, n.age
我还了解,我可以查看属性是否出现在字符串列表中:
MATCH (a)
WHERE a.name IN ['Peter', 'Timothy']
RETURN a.name, a.age
但是,我无法通过手动在列表中输入数千个名称来创建查询。那么,根据我想找到的人筛选最有效的方法是什么呢?一种方法是使用
加载CSV
——通常您会使用它将数据加载到图表中,但您不必这样做。给出一个图表:
MERGE (:Person { name: 'Geoff' })
MERGE (:Person { name: 'Timothy' })
MERGE (:Person { name: 'Peter' })
并将CSV文件放入数据库的导入目录:
Name,Phone
Timothy,07700900100
Peter,07700900101
您可以将所有感兴趣的搜索名称加载到列表中,然后使用标准的in
子句进行查找:
LOAD CSV WITH HEADERS FROM 'file:///names.csv' AS line
WITH collect(line.Name) AS names
MATCH (p: Person) WHERE p.name IN names
RETURN p
注意,我们排除了杰夫,因为他不在CSV中
另一种方法是尝试一次匹配传入CSV的每一行,这样可以更容易地筛选多个属性:
LOAD CSV WITH HEADERS FROM 'file:///names.csv' AS line
MATCH (p: Person) WHERE p.name = line.Name AND p.phone = line.Phone
RETURN p
一种方法是使用
加载CSV
——通常您可以使用它将数据加载到图形中,但不必这样做。给出一个图表:
MERGE (:Person { name: 'Geoff' })
MERGE (:Person { name: 'Timothy' })
MERGE (:Person { name: 'Peter' })
并将CSV文件放入数据库的导入目录:
Name,Phone
Timothy,07700900100
Peter,07700900101
您可以将所有感兴趣的搜索名称加载到列表中,然后使用标准的in
子句进行查找:
LOAD CSV WITH HEADERS FROM 'file:///names.csv' AS line
WITH collect(line.Name) AS names
MATCH (p: Person) WHERE p.name IN names
RETURN p
注意,我们排除了杰夫,因为他不在CSV中
另一种方法是尝试一次匹配传入CSV的每一行,这样可以更容易地筛选多个属性:
LOAD CSV WITH HEADERS FROM 'file:///names.csv' AS line
MATCH (p: Person) WHERE p.name = line.Name AND p.phone = line.Phone
RETURN p