我相信這應該給你你想要的東西(爲最早的帖子每個用戶):
START user=node(1, 2, 3, 4)
MATCH user <-[:creator]- post
WITH user, min(post.createdAt) as earliest
MATCH (user2) <-[:creator]- (post2 {createdAt : earliest})
WHERE ID(user2) = ID(user)
RETURN user2,post
您的查詢的第一部分出現正確的,但在你的第二場比賽中聲明你要找的人任何(用戶)< - [:creator] - (發佈)帖子創建時間最早的地方。當你指出這隻會返回一個(可能)條目。
爲了獲得每個用戶最早的帖子,第二個MATCH需要以某種方式明確指定每個用戶。我的示例使用WHERE ID(user2)= ID(user),但至少有一種其他方式可能更可取。如果你有一個獨特的用戶屬性,那麼你可以在我的例子中指定屬性值,就像(post2 {createdAt:最早})。例如,您可以執行類似(user2 {username:user.username})。請注意,在我的所有示例中,如果沒有其他內容(我不清楚它是否可以使用相同的變量名稱),則還應該在第二個MATCH語句中使用另一個變量名稱來消除歧義,但如果它們'重新相同)。
另外,我假設你shorthanding查詢,你可能會使用標籤,所以查詢會是這個樣子:
START user=node(1, 2, 3, 4)
MATCH (user:USER) <-[:creator]- (post:POST)
WITH user, min(post.createdAt) as earliest
MATCH (user2:USER) <-[:creator]- (post2:POST {createdAt : earliest})
WHERE ID(user2) = ID(user)
RETURN user2,post
我希望這是明確的,隨意澄清如果不是。