Neo4j Cypher:使用展开和数组构建字符串
我在neo4j中使用了一个带有nodejs驱动程序()的展开查询 我试图做的是在展开查询中包含一个对象数组。 如果我按如下所示对字符串进行硬编码,它目前可以工作,但我正在尝试动态插入数组Neo4j Cypher:使用展开和数组构建字符串,neo4j,cypher,Neo4j,Cypher,我在neo4j中使用了一个带有nodejs驱动程序()的展开查询 我试图做的是在展开查询中包含一个对象数组。 如果我按如下所示对字符串进行硬编码,它目前可以工作,但我正在尝试动态插入数组 UNWIND [{Label:'User',Lang:'English'},{Label:'Usuario',Lang:'Español'},{Label:'用户',Lang:'中文_简体'}] as ll 不管我使用什么查询,在测试之后,上面的方法都是有效的,但如果我执行以下操作,则不会: var MyL
UNWIND [{Label:'User',Lang:'English'},{Label:'Usuario',Lang:'Español'},{Label:'用户',Lang:'中文_简体'}] as ll
不管我使用什么查询,在测试之后,上面的方法都是有效的,但如果我执行以下操作,则不会:
var MyList = [{Label:'User',Lang:'English'},{Label:'Usuario',Lang:'Español'},{Label:'用户',Lang:'中文_简体'}];
"UNWIND "+ MyList " + as ll"
理想情况下,您应该在查询中使用ll标识符 但是,通过看到您有一个名为Label的属性,我提醒您,当前无法动态添加标签
UNWIND [{Label:'User',Lang:'English'},{Label:'Usuario',Lang:'Español'},{Label:'用户',Lang:'中文_简体'}] as ll
您可能要执行的一个查询是:
UNWIND MyList AS ll
CREATE (user:User) SET user.lang = {ll}.Lang
Chris理想情况下,您可以在查询中使用ll标识符 但是,通过看到您有一个名为Label的属性,我提醒您,当前无法动态添加标签
UNWIND [{Label:'User',Lang:'English'},{Label:'Usuario',Lang:'Español'},{Label:'用户',Lang:'中文_简体'}] as ll
您可能要执行的一个查询是:
UNWIND MyList AS ll
CREATE (user:User) SET user.lang = {ll}.Lang
Chris理想情况下,您可以在查询中使用ll标识符 但是,通过看到您有一个名为Label的属性,我提醒您,当前无法动态添加标签
UNWIND [{Label:'User',Lang:'English'},{Label:'Usuario',Lang:'Español'},{Label:'用户',Lang:'中文_简体'}] as ll
您可能要执行的一个查询是:
UNWIND MyList AS ll
CREATE (user:User) SET user.lang = {ll}.Lang
Chris理想情况下,您可以在查询中使用ll标识符 但是,通过看到您有一个名为Label的属性,我提醒您,当前无法动态添加标签
UNWIND [{Label:'User',Lang:'English'},{Label:'Usuario',Lang:'Español'},{Label:'用户',Lang:'中文_简体'}] as ll
您可能要执行的一个查询是:
UNWIND MyList AS ll
CREATE (user:User) SET user.lang = {ll}.Lang
Chris问题是,当您执行
操作时,“展开”+MyList
会将MyList
转换为字符串,它类似于[对象对象],[对象对象],…
。我的第一个想法是使用,但这会产生一个JSON,这在cypher语法中是不正确的(它是{“Label”:…},而不是{Label:…})。解决方案是使用:
var queryString='UNWIND{list}as ll//continue query';
var queryParams={list:MyList};
db.cypherQuery(queryString,queryParams,function(err,res){
//处理响应
});
问题是,当您执行“展开”+MyList
时,您将MyList
转换为字符串,它将类似于[object object],[object object],…
。我的第一个想法是使用,但这会产生一个JSON,这在cypher语法中是不正确的(它是{“Label”:…},而不是{Label:…})。解决方案是使用:
var queryString='UNWIND{list}as ll//continue query';
var queryParams={list:MyList};
db.cypherQuery(queryString,queryParams,function(err,res){
//处理响应
});
问题是,当您执行“展开”+MyList
时,您将MyList
转换为字符串,它将类似于[object object],[object object],…
。我的第一个想法是使用,但这会产生一个JSON,这在cypher语法中是不正确的(它是{“Label”:…},而不是{Label:…})。解决方案是使用:
var queryString='UNWIND{list}as ll//continue query';
var queryParams={list:MyList};
db.cypherQuery(queryString,queryParams,function(err,res){
//处理响应
});
问题是,当您执行“展开”+MyList
时,您将MyList
转换为字符串,它将类似于[object object],[object object],…
。我的第一个想法是使用,但这会产生一个JSON,这在cypher语法中是不正确的(它是{“Label”:…},而不是{Label:…})。解决方案是使用:
var queryString='UNWIND{list}as ll//continue query';
var queryParams={list:MyList};
db.cypherQuery(queryString,queryParams,function(err,res){
//处理响应
});
感谢这个伟大的解决方案。事实上,JSON.stringify
确实会在关键点周围提供引号。这是JSON规范的一部分是的,这就是我实际的意思(可能措辞有点混乱):JSON.stringify
给你{“Label”:“User”}
,而Cypher期望{Label:'User'}
。如果答案不清楚,我可以重新措辞。感谢这个伟大的解决方案。事实上,JSON.stringify
确实会在关键点周围给你引号。这是JSON规范的一部分是的,这就是我实际的意思(可能措辞有点混乱):JSON.stringify
给你{“Label”:“User”}
,而Cypher期望{Label:'User'}
。如果答案不清楚,我可以重新措辞。感谢这个伟大的解决方案。事实上,JSON.stringify
确实会在关键点周围给你引号。这是JSON规范的一部分是的,这就是我实际的意思(可能措辞有点混乱):JSON.stringify
给你{“Label”:“User”}
,而Cypher期望{Label:'User'}
。如果答案不清楚,我可以重新措辞。感谢这个伟大的解决方案。事实上,JSON.stringify
确实会在关键点周围给你引号。这是JSON规范的一部分是的,这就是我实际的意思(可能措辞有点混乱):JSON.stringify
给你{“Label”:“User”}
,而Cypher期望{Label:'User'}
。如果答案不清楚,我可以重新措辞。