怎么实现点的关联查询

多 pattern 大概多久发布 ?

LOOKUP where不支持指定顶点id过滤,只能在go from里面添加:

GO FROM $-.vids OVER writes,relates WHERE $-.vids == 1391787869177122816

更关键的是查出来的数据都是一列的,一维的,不是多维嵌套的json结构。

和预期的结果不符合:

{
	id: 24567434,
	text: "今天天气不错",
	author:{
		id: 1434652,
		name: "小明"
	},
	themes: [{
		id: 5434652,
		name: "日常生活"
	}],
}

总的来说,总有这样那样的问题,终究是实现不了这个简单的需求

多 pattern 大概多久发布 ?

规划年中的下个版本,看复杂度可能延后一点

MATCH (u:user)-[:author]-(p:post)-[:theme]-(t:themes)
RETURN u, p, collect(distinct t)

确实。查出来是 json 结构只是显示的问题,基本上 neo4j 的 console 也是一样的。
Neo4j Browser 相似的可视化工具可以尝试一下 nebula-studio. nebula-studio

MATCH (u:user)-[:author]-(p:post)-[:theme]-(t:themes)
RETURN u, p, collect(distinct t)

@yee 这个也不行。。。

1,这样会将所有的属性返回

2,只能局限于1-2条边的情况

MATCH (u:user)-[:author]-(p:post)-[:theme]-(t:themes)
RETURN u.name, p.text, collect(distinct t.name)

这个不行?

确实。查出来是 json 结构只是显示的问题,基本上 neo4j 的 console 也是一样的。
与 Neo4j Browser 相似的可视化工具可以尝试一下 nebula-studio. nebula-studio

关键是这种多维嵌套的结构在查询的时候如何表示?如何拼接?语句怎么写 ?

二维还好,如果是多维,三级嵌套这种,比如 文章(post) → 文章的主题(theme) → 主题的作者(user)。。这些如果也要查出来,基本就很难以实现。

类似这些需求在dgraph里面实现起来就非常的简单,而且查出来的就是符合业务所需的结构数据

前面说过了

1,这样会将所有的属性返回
2,只能局限于1-2条边的情况
3,一维结构的数据,难以实现多维嵌套的结构数据查询

我觉得是可以实现的:

MATCH (p:post)--(t:theme)--(u:user)
WITH p, t, collect(u) AS tusers 
RETURN p, collect(t) AS themes, collect(tusers) AS pusers

符合业务所需的结构数据完全可以在业务端组装出来。

dgraph 支持自定义结构类型确实蛮方便的,nebula 现在还做不到。
如果是用结构类型的话,theme 和 user 将作为内部属性类型而非实体,那么比方说我要查询 某个 user 写过哪些 post 怎么实现呢?