2016-06-01 2 views
0

В настоящее время у меня есть следующая база данных графиков в neo4j с сотнями тысяч «клиентов» (поэтому в моей базе данных neo4j есть сотни тысяч этого макета).Как я могу подсчитать, сколько раз я получаю результат в neo4j?

graph databse layout

В настоящее время я бегаю следующий запрос:

MATCH (m:Member)-[r:ACTIVITY{issue_d:"16-Jan"}]->(l:Loan) 
MATCH (m)-[:ACTIVITY]->(p:Payments) 
MATCH (m)-[:HISTORY]->(c:CreditHistory) 
WHERE NOT p.total_pymnt=0 
RETURN l.funded_amnt, 
     p.total_pymnt, 
     (l.funded_amnt)-(p.total_pymnt) AS amountowed, 
     r.issue_d AS dateissued, 
     l.installment AS monthlypayment, 
     l.int_rate AS interestrate, 
     c.dti AS debt 
ORDER BY (l.funded_amnt)-(p.total_pymnt) DESC 
LIMIT 50000; 

И я получаю результаты, как следующее (за исключением только январь, как "dateissued") 2

I хочу подсчитать, сколько раз я получаю, что ежемесячный платеж превышает 1000, но запрос count (x) в cypher работает только для подсчета вещей, связанных с одним узлом, а не с узлами. Как я могу рассчитать все мои данные?

ответ

0

COUNTявляется для подсчета вещей "через узлы".

Этот простой запрос должен дать вам подсчет количества l.installment значений> 1000: ответ

MATCH (l:Loan) 
WHERE l.installment > 1000 
RETURN COUNT(*); 
+0

Что означает * в COUNT (*)? (Я только начинаю с neo4j) – Aly

+1

В этом случае это означает «подсчитать количество строк результата». Но вы должны прочитать [агрегация] (http://neo4j.com/docs/developer-manual/current/#query-aggregation), чтобы понять, что происходит в других ситуациях, когда есть «ключевые значения». – cybersam

0

cybersam является правильным, вы можете сделать это таким образом тоже:

MATCH (l:Loan) 
WHERE l.installment > 1000 
RETURN COUNT(l); 

С вами ищут l.installment>1000, то просто верните номер l, который удовлетворяет этому условию.