请尽量不要发截图,而是发文字的查询,这样别人帮你复现查询的时候可以直接复制,还更搜索友好。
MATCH (n:player)
WITH COLLECT(n.player.name) AS playerNames LIMIT 5
MATCH (n:team)
WITH playerNames + COLLECT(n.team.name) AS allNames LIMIT 5
UNWIND allNames AS name
RETURN name ORDER BY name ASC
+-------------------------+
| name |
+-------------------------+
| "76ers" |
| "Amar'e Stoudemire" |
| "Aron Baynes" |
| "Ben Simmons" |
| "Blake Griffin" |
| "Boris Diaw" |
| "Bucks" |
| "Bulls" |
| "Carmelo Anthony" |
| "Cavaliers" |
| "Celtics" |
...
这种unwind会存在问题,就是第二个如果没数据就整个没数据了
之前好像再别的帖子给过建议,这种表查询适合用 LOOKUP ,后边的图查询可以接管道做哈。
- 用 MATCH 如果没有 WHERE,第二个查询里写 OPTIONAL
MATCH (n:player)
WITH COLLECT(n.player.name) AS playerNames LIMIT 5
OPTIONAL MATCH (n:team)
WITH playerNames + COLLECT(n.team.name) AS allNames LIMIT 5
UNWIND allNames AS name
RETURN name ORDER BY name ASC
但是lookup 现在如果不用全文索引也很慢,如果用模糊查询,全文索引又要求查询属性不能为null,并且where子句只能有一个
- 只有第一跳用全文索引,后续的 WHERE 用管道再 WHERE (我之前好像在别的帖子里提到过)
LOOKUP xxxx CONTAINS ... YIELD ... | YIELD ... WHERE <other conditions>
- 全文索引的不能 null 如果是强制(啊,这个我之前没注意),能不能考虑让 schema 这个属性是 NOT NULL,并且同时给出一个默认值?比如 string 的
"NULL"
绕过限制 ?
NOT NULL DEFAULT "NULL"
这样可以吗,那直接给个空字符串呢
我没试过,但是感觉也是可以
好的,现在我们db工程师改变了,rokckedb的缓存配置变大,就快了
1 个赞