在JavaScript项目中使用返回的Neo4J节点



在我的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结果迭代并为感兴趣的节点过滤。

相关内容

  • 没有找到相关文章

最新更新