Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j 在节点中找不到值时的回退遍历方法_Neo4j - Fatal编程技术网

Neo4j 在节点中找不到值时的回退遍历方法

Neo4j 在节点中找不到值时的回退遍历方法,neo4j,Neo4j,我对Neo4J很陌生,所以如果我的问题看起来很愚蠢,请原谅,但我想知道如果在原始查询中没有找到值(null),是否可以进行回退匹配。 这是图形的外观: User1 - linked -> Channel 1 User1 - linked -> Channel 2 Channel1 - has -> property1_channel_1, null , property3_channel_1 Channel2 - has -> property1_channel_

我对Neo4J很陌生,所以如果我的问题看起来很愚蠢,请原谅,但我想知道如果在原始查询中没有找到值(null),是否可以进行回退匹配。 这是图形的外观:

User1 - linked -> Channel 1 

User1 - linked -> Channel 2

Channel1 - has -> property1_channel_1, null , property3_channel_1

Channel2 - has -> property1_channel_2, property2_channel_2, property3_channel_2
在本例中,当我查询数据User1,Channel1:

物业1_通道_1、物业2_通道_2、物业3_通道_1

可能吗

编辑:


我如何构造我的查询,以便在我的一个产品中缺少属性(比如数量)时,从基中的同一产品中获取其默认值。可能吗?在本例中,底部的裤子是完整的实体,但EN通道中的裤子是不完整的。

我猜是这样的

// get all the channels the user is linked to
MATCH (u:User)-[:LINK]->(c:Channel) 
WHERE u.name='User1'

// put them in the right order
WITH c ORDER BY c.name

// merge the property maps using apoc.map.mergeList()
RETURN apoc.map.mergeList(COLLECT(properties(c)) AS properties

我认为在我的例子中,coalesce应该做得更好,因为根据文档,它应该返回我的图中的第一个“不可为空”的值,但我仍然想知道如何强制查找我的基并从中提取相应的值。附言:我附上了一张有一些解释的图表。。所以我运行了你的代码,在我的map{“name”:“,”id“:2,“qty”:10}中只返回了一个元素,这不是假设在其中吐出4个不同的元素吗?这是我执行的查询:```match(u:User)-[:HAS_CHANNEL]>(c:CHANNEL)-[:HAS_PRODUCT]>(p:PRODUCT)where u.name=“Mladen”返回apoc.map.mergeList(collect(properties(p)))``所有的
用户
都连接到一个“基地”(可能是
频道
)吗?如何确定哪个节点是“基本”节点?是的,所有用户都连接到一个基本通道,但他们也可能有其他通道。当我从通道X查询产品时,数据对象将与基本通道对象(按id)合并,并且只追加缺少的属性。我知道我可以通过编程来实现这一点,但我希望从neo4j那里得到这个。当你进行查询时,你是否会提供这三件事的
id
值:一个
User
、一个Channel和一个“BASE”
Channel
?我的查询将如下所示:match(u:User)-[:HAS\u Channel]>(c:Channel)-[:HAS\u-PRODUCT]>(p:Product)其中u.name=“Mladen”return collect(properties(p))您的问题是“查询数据用户1,Channel1”,但您的实际查询确实指定了一个特定的
频道(也不是
基本频道)。您到底想做什么,以及查询如何知道使用哪个
频道作为“基本频道”?