我的例子得到了我的推文和我朋友的推文:
MATCH
(me:User{user_id: "346"})-[:POSTS]->(t:Tweet),
(me)-[:FOLLOWS]->(following:User)-[:POSTS]->(t1:Tweet)
RETURN
t, t1
SKIP 10 LIMIT 10
问题:如何将t和t1合并到结果集中。基本上,我想构建json响应如下:
[
{
"tweet_id": "504597",
"message": "Commodi consequatur qui libero.",
"location": "25909 Hermann Village",
"user": {
"user_id": "346",
"user_name": "Madaline.Mayer60346",
"full_name": "Conor Hyatt",
"avatar_url": "http://lorempixel.com/640/480"
}
},
{
"tweet_id": "504261",
"message": "Atque hic ut velit.",
"location": "42920 Esmeralda Lakes",
"user": {
"user_id": "347",
"user_name": "Madaline",
"full_name": "Conor Test",
"avatar_url": "http://lorempixel.com/640/480"
}
}
]
答案 0 :(得分:1)
看起来你想要合并推文集。怎么回事?
MATCH (me:User{user_id: "346"})-[:POSTS]->(t:Tweet)
WITH me, COLLECT(t) as myTweets
MATCH (me)-[:FOLLOWS]->(following:User)-[:POSTS]->(t:Tweet)
WITH myTweets + COLLECT(t) as allTweets
UNWIND allTweets as tweets
RETURN tweets
SKIP 10 LIMIT 10
在进行分页时使用ORDER BY通常是个好主意。或者你可以放弃UNWIND并获取集合的相关幻灯片(RETURN推文[10..20]),如果你需要按属性订购节点集合,那么apoc.coll.sortNodes()就有一个APOC程序
编辑:
您可以尝试使用此查询,其MATCH应返回您和您关注的用户的推文。但是,SKIP和LIMIT虽然它们应该可以工作,但可能不会返回你想要的结果集,因为你现在没有提供ORDER BY子句(如果你自己提供这个,那么你还应该添加一个索引)在你订购的财产上。)
MATCH (me:User{user_id: "346"})-[:POSTS|:FOLLOWS*1..2]->(t:Tweet)
RETURN t
SKIP 10 LIMIT 10
修改
关于尝试使用APOC过程时的错误的最后一个问题,您不能直接将它们用作设置操作的一部分。
试试这个:
MATCH (t:Tweet{tweet_id: '1'})
CALL apoc.date.parseDefault(t.created_at, 'ms') YIELD value
SET t.created_milliseconds = value
RETURN t