在我的JavaScript项目中,我使用了长的Cypher查询。查询的开始非常相似。我可以在新的Querie中使用一个函数的节点返回吗?我使用neo4j-driver和社区neo4j版本。为了简化我的问题,我在示例中更改了查询。
const doSomething1 = async() =>{
let query = [
'MATCH (person:Person)',
'RETURN person'
].join('n');
let _person = await session.run(query,{});
return _person;
};
const doSomething2 = async() =>{
let _person = await doSomething1();
let query = [
'WITH {_testPerson} as _testPerson',
'WHERE _testPerson.age = 18',
'RETURN person'
].join('n');
let _resultTestPerson = await session.run(query,{
_testPerson: _person,
});
return _resultTestPerson;
};
我希望" Dosomething 2"功能将返回所有年龄18岁的节点。
尝试查看Undind Operation:它需要一个数组,并让您在其中的每个元素上运行查询。您的第二个查询可能看起来像这样:
UNWIND {arrayOfPeople} AS person
WHERE person.age = 18
RETURN person
在旁注上,您给出的示例可以写为一个非常简单的查询。也许您的实际问题只能在一个查询中解决:
MATCH (p:Person)
WHERE p.age = 18
RETURN p
由于doSomething1
已经获得了所有Person
节点,因此doSomething2
不需要进行另一个Neo4J查询。
相反,doSomething2
应该仅通过doSomething1
结果迭代并为感兴趣的节点过滤。