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 在cypher或py2neo中处理多个搜索字段_Neo4j_Cypher_Py2neo - Fatal编程技术网

Neo4j 在cypher或py2neo中处理多个搜索字段

Neo4j 在cypher或py2neo中处理多个搜索字段,neo4j,cypher,py2neo,Neo4j,Cypher,Py2neo,刚刚开始与塞弗。试图了解处理此案的最佳方式。我需要根据几个搜索字段(不总是存在)查询数据库。想知道最好的处理方法是什么。例如,我从html post请求中收集数据 storeName = request.form['storeName'] storeCountry = request.form['storeCountry'] storeState = request.form['storeState'] storeCity = request.form['storeS

刚刚开始与塞弗。试图了解处理此案的最佳方式。我需要根据几个搜索字段(不总是存在)查询数据库。想知道最好的处理方法是什么。例如,我从html post请求中收集数据

storeName = request.form['storeName']
storeCountry = request.form['storeCountry']       
storeState = request.form['storeState']       
storeCity = request.form['storeState']
我使用的是flask框架,所以用py2neo定义了这个函数来处理搜索字段。不确定我是否正确,但如果所有字段都设置正确,希望类似的东西可以正常工作

def get_search_results(skipNumber,limitNumber, storeName, storeCountry,storeState, storeCity):
        query = """
        MATCH (store:store) WHERE store.name = {storeName}
        MATCH (store:store)-[:IS_IN_COUNTRY]->(c:Country) WHERE c.name = {storeCountry}
        MATCH (store:store)-[:IS_IN_STATE]->(s:State) WHERE s.name = {storeState}
        MATCH (store:store)-[:IS_IN_CITY]->(ct:City) WHERE ct.name = {storeCity}

        RETURN user SKIP {skip} LIMIT {limit}
        """

        return graph.cypher.execute(query, skip=skipNumber, limit=limitNumber, storeName=storeName, storeCountry=storeCountry, storeState=storeState, storeCity=storeCity)
我想处理用户只提交一个或两个字段的情况
例如
1.如果用户只提交存储名称,那么我应该能够返回具有该存储名称的所有节点。
2.如果用户仅提交门店名称和国家/地区。返回该国家/地区的所有存储节点
3.如果用户只提交商店名称、国家和州。返回该国家/地区和州的所有存储节点


是否可以编写一个通用密码查询来处理此类情况,即忽略字段未设置或未设置的情况,或者我需要编写不同的查询来处理每种情况?

是否有某些原因导致您无法根据哪些参数为空或不为空来动态组合查询?不确定我是否理解您的问题正确地您的意思是仅将参数传递给def get_search_结果(..),该结果不为空?我可以这样做,但如果有大量的搜索参数,它将需要大量的预处理。例如,15个搜索参数加上它们的不同组合。我想知道使用逻辑运算符和null的组合处理cypher是否更容易我的意思是,当您组装查询本身时,如果相关参数为null,则只包括相关匹配行。因此,如果storeCountry参数为null,则不会将该匹配的行和相应的WHERE追加到查询字符串中。这是我不确定如何执行的部分。有什么例子我可以参考吗?我肯定有。这应该只是在python中使用if语句的一个应用程序,并且在某些条件下,将查询字符串与相关行(可能是+=运算符)连接起来。