2015-06-29 49 views
1

我擁有標籤爲「Campaign」的節點。我每次都以不同的順序得到它們。Neo4j PHP以相同的順序返回結果,其中

因此,我查詢到數據庫後,我有一個Campaigns對象的數組。

之後,我將它們發送到db中的另一個函數中。

MATCH (campaign:Campaign) 
       where campaign.id="1433855846340" or campaign.id="1433855948013" or campaign.id="1433856017523" or campaign.id="1433856146618" or campaign.id="1433856170282" or campaign.id="1433856364138" or campaign.id="1433856901298" or campaign.id="1433857169469" or campaign.id="1433857216853" or campaign.id="1433873093289" or campaign.id="1433873178949" or campaign.id="1433926766014" 
       with campaign optional match campaign<-[:TAKEN_IN]-(picture:Picture) with campaign, collect(picture) as pictures 
       with pictures[toInt(rand()*size(pictures))] as picture,campaign 
       optional match picture-[:UPLOADED_TO]->(facebookPicture:FacebookPicture) 
       RETURN picture.source as coverPicture,campaign.id 

基本上我所需要的就是以與where子句相同的順序返回結果。我該怎麼辦,如果沒有,知道如果活動是從數據庫得到了在

DESC

例如/

+0

你使用任何的PHP客戶端? –

+0

是的...我使用https://github.com/jadell/neo4jphp –

回答

0

我覺得這是最簡單的在你的客戶端應用程序做的,只需將id的請求保存在一個數組中,並將結果放入一個鍵控數組(字典)中,並通過原始數組中的id檢索它們。

只是一般說明,您可以使用密碼和IN子句中的參數替換OR構造。

MATCH (campaign:Campaign) 
WHERE campaign.id IN {campaign_ids} 
OPTIONAL MATCH campaign<-[:TAKEN_IN]-(picture:Picture) 
WITH campaign, collect(picture) as pictures 
WITH pictures[toInt(rand()*size(pictures))] as picture,campaign 
OPTIONAL MATCH picture-[:UPLOADED_TO]->(facebookPicture:FacebookPicture) 
RETURN picture.source as coverPicture, campaign.id