Neo4j PHP以与where相同的顺序返回结果


Neo4j PHP returning results at the same order as the where

我有标签为"Campaign"的节点。我每次都会按照不同的顺序得到它们。

因此,在查询DB之后,我得到了一个包含Campaigns对象的数组。

之后,我将它们发送到数据库中的另一个函数中。

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子句相同的顺序返回结果。我怎么能在不知道活动是否来自中的DB的情况下做到这一点

DESC-

,例如/

我认为这在客户端应用程序中是最容易做到的,只需将请求的id保存在一个数组中,并将结果放入一个键控数组(字典)中,然后根据原始数组中的id检索它们。

一般来说,您可以使用cypher中的参数和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