我的示例获取我的推文和朋友的推文:
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"
}
}
]
看起来您想结合推文的集合。这怎么样?
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
通常在分页时使用订单是一个好主意。另外,您可以放弃放松身心并取下相关的幻灯片(返回推文[10..20]),如果您需要通过属性订购节点的集合,则该apoc.coll.sortnodes有一个apoc过程()
编辑:
您可以改用此查询,其匹配应返回您和您正在关注的用户的推文。但是,跳过和限制,尽管它们应该工作,但可能不会返回您想要的结果集,因为您目前没有通过条款提供订单在您要订购的属性上)。
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