В Neo4j 1.9.2 я хотел бы рассчитать все отношения для узла EACH в наборе узлов.Neo4j 1.9.2: Запросить/фильтровать и подсчитывать несколько типов узлов
Все мои узлы имеют три свойства: type
, id
и created
. Все они связаны «следованием». Вот пример того, как они подходят друг другу:
user('id:1')-[follows]->review('id:1')
user('id:1')-[follows]->user('id:2')
user('id:2')-[follows]->review('id:1')
Вы получаете идею.
Результаты должны быть что-то вроде этого:
[
{
followers: 2,
id: 1
created: 2013-12-13T12:13:42-08:00
type: review
},
{
followers: 1,
id: 2,
created: 2012-02-13T12:13:43-08:00
type: user
},
{
followers: 0,
id: 1,
created: 2012-02-13T12:13:43-08:00,
type: user
}
]
данные мне дали по существу следующее:
{
users: [1, 2],
reviews: [1]
}
Я пытался запросов, как это:
start user1=node:user('id:1'),
user2=node:user('id:2'),
review1=node:review1('id:1')
match user1<-[user1_f:follows]-(),
user2<-[user2_f:follows]-(),
review1<-[review1_f:follows]-()
return user1, count(user1_f),
user2, count(user2_f),
review1, count(review1_f);
Но, очевидно, это несостоятельно для больших списков node:id
пар (на самом деле Neo умирает действительно когда запрос становится большим).
Любая идея, как достичь этого? Я проливал документы, чтобы узнать, есть ли какой-то способ, но я не уверен, что есть.
Да, мы хотели бы обновить, к сожалению, это невозможно в данный момент. Хотя это на дорожной карте! Так что я слышу, что нет никакого способа сделать это через несколько полностью произвольных типов, если вы не индексируете все возможные комбинации. Я думаю, что было бы лучше просто сделать один запрос для каждого типа (так как у нас не так много разных типов). Благодаря! – wulftone
Наконец-то я решил реализовать эту оптимизацию, и я получил 10-кратное сокращение времени отклика. Супер полезно! – wulftone