(class:Class)-[r1:HAS_STUDENTS]->(s:St-6ren">
gpt4 book ai didi

neo4j - neo4j 中的参数化查询

转载 作者:行者123 更新时间:2023-12-02 09:35:04 25 4
gpt4 key购买 nike

我想将此查询创建为参数化查询。

var query = ["Match (name:Name)-[r:IN_CLASS]->(class:Class)-[r1:HAS_STUDENTS]->(s:Student) where id(s)=",rollno," and lower(s.Name)=~'.*",name,".*' RETURN id(s),s.Name limit 5"].join('');

我已经尝试过这段代码,但它给出了错误:

var query = ["Match (name:Name)-[r:IN_CLASS]->(class:Class)-[r1:HAS_STUDENTS]->(s:Student) where id(s)=",rollno," and lower(s.Name)=~'.*{name}.*' RETURN id(s),s.Name limit 5"].join('');

db.query(query , {name : name} , function(err,results){
if (err) return callback(err);
if(results){
return callback(null,results);
}
else{
return callback(null,false);
}
});

请告诉我哪里错了?

最佳答案

参数不能是文字的一部分。你已经尝试过

... WHERE ... lower(s.Name)=~'.*{name}.*'

整个正则表达式需要作为参数值:

... WHERE ... lower(s.Name)=~ {name}

您需要将您的值与 .* 连接起来至.*<value>.*在客户端并将其作为参数值传递。

编辑:

您还可以在 Cypher 中连接:

... WHERE ... lower(s.Name)=~'.*'+{name}+'.*'

对于不区分大小写的正则表达式,请使用:

... WHERE ... s.Name =~'(?i).*'+{name}+'.*'

关于neo4j - neo4j 中的参数化查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27295546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com