Neo4j Cypher:使用展开和数组构建字符串

Neo4j Cypher:使用展开和数组构建字符串,neo4j,cypher,Neo4j,Cypher,我在neo4j中使用了一个带有nodejs驱动程序()的展开查询 我试图做的是在展开查询中包含一个对象数组。 如果我按如下所示对字符串进行硬编码,它目前可以工作,但我正在尝试动态插入数组 UNWIND [{Label:'User',Lang:'English'},{Label:'Usuario',Lang:'Español'},{Label:'用户',Lang:'中文_简体'}] as ll 不管我使用什么查询,在测试之后,上面的方法都是有效的,但如果我执行以下操作,则不会: var MyL

我在neo4j中使用了一个带有nodejs驱动程序()的展开查询

我试图做的是在展开查询中包含一个对象数组。 如果我按如下所示对字符串进行硬编码,它目前可以工作,但我正在尝试动态插入数组

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'}
。如果答案不清楚,我可以重新措辞。