当前位置: 首页 > 知识库问答 >
问题:

Neo4j Cypher检查节点是否为子节点的祖先

穆展鹏
2023-03-14

我有以下课程:

@NodeEntity
public class Product {

    private final static String CONTAINS = "CONTAINS";

    @GraphId
    private Long id;

    @RelatedTo(type = CONTAINS, direction = Direction.INCOMING)
    private Set<Product> parentProducts = new HashSet<>();

}

我正在尝试实现一种方法

public boolean isProductAncestor(Product productId, Product childProductId) {
    //some Cypher query
}

这将检查productId是否是child productId的祖先(任何深度,直到根)。

我需要一个密码查询。

共有1个答案

司寇旺
2023-03-14

此查询查找它们之间的路径:

MATCH path=(p:Product)-[:CONTAINS*]->(m:Product)
WHERE id(p) = {idp} AND id(m) = {idm}
RETURN path LIMIT 1;

如果您得到一个结果,这意味着mp的祖先。如果你一无所获,他们之间就没有关系了。

 类似资料:
  • 问题内容: 我有一个非常简单的程序,你可以用你的,, ,和键进行拍摄。所有的拍摄和移动动画都可以工作,但是我不确定如何实现一个系统,在该系统中,程序会不断检查子弹是否已碰到节点(例如圆圈)。 我本以为可以存储所有项目符号,然后使用来检查项目符号是否接触到节点;但是我觉得那样会减慢程序的速度,并且子弹可以在等待再次执行时通过它们。 任何建议都会有所帮助。 代码:Pastebin 问题答案: 您可以使

  • 问题内容: 如何使用Node的驱动程序检查ObjectID是否有效 我试过了 : 但是我不断收到异常,而不是对或错。(例外只是一个“ throw e; // process.nextTick错误,或“第一次滴答”中的“ error”事件” 问题答案: 不知道函数来自哪里,但是不在node-mongodb- native中 。 如果要检查由24个十六进制字符组成的字符串,则可以使用此正则表达式。 取

  • 我从我的网络商店API调用中获取XML,其结构非常像下面的示例: 其中有更多的参数,数量取决于许多外部因素。我正在尝试获取用户名,当id“111”和id“112”的值是我要查找的值时 上述代码按预期返回“userOne”和“userTwo”。 问题是,Id“111”要么有值“Param 1 is on”要么什么都没有,如果没有值,它就不会显示在XML中。所以我需要一个表达式来检查id为“111”的

  • web3.eth.isSyncing()方法用来检查节点当前是否已经与网络同步。 调用: web3.eth.isSyncing([callback]) 返回值: 一个Promise对象,其解析值为Object或Boolean。如果节点尚未与网络同步, 则返回false,否则返回一个同步对象,具有以下属性: startingBlock - Number: 同步起始块编号 currentBlock

  • 10.4. 查找节点的直接子节点 解析 XML 文档时,另一个有用的己技巧是查找某个特定元素的所有直接子元素。例如,在语法文件中,一个 ref 元素可以有数个 p 元素,其中每一个都可以包含很多东西,包括其他的 p 元素。你只要查找作为 ref 孩子的 p 元素,不用查找其他 p 元素的孩子 p 元素。 你可能认为你只要简单的使用 getElementsByTagName 来实现这点就可以了,但是

  • 输入如下: 一个,每个子数组包含2个int,即{parent,child},意味着有一个从->的路径。 例如 我的想法: 将输入数据表示为一个DAG图,其中数据存储在像这样的映射中,其中key是顶点,value是它的邻接列表。并且图形中的方向是相反的(与输入数据相比)为,以便于查找parent. 使用函数查找单个顶点的所有父节点(直接和间接),并返回. 因此,只需为每个输入顶点调用一次,然后比较返