я получил Cypher-запрос, как это:Neo4j Cypher: вернуть некоторые атрибуты только если ROWCOUNT меньше порога
match (s)-[r]-(m)
where s.id='...' and r.id='...'
return s.id as id, s.title as title, s.content as content
То, что я хотел бы добиться того, чтобы вернуться (потенциально очень большой) значение s.content, только если суммарный ряд строк меньше заданного порога (например, 5).
Я попытался
match (s:mytype)-[r:myothertype]-(m:mytype)
where s.id='...' and r.id='...'
return s.id as id, s.title as title,
case
when count(*) < 5 s.content
else null
end as content
Этот запрос кажется синтаксически правильным, но он принимает навсегда, чтобы вернуться и в конечном итоге срывает мой сервер, даже с помощью всего 10 узлов и 4 отношений в базе данных.
Что я делаю неправильно?
Thanx заранее,
Jens
P.S. Просто, чтобы дать понять: я не хочу ограничивать результаты. Мне нужен идентификатор и заголовок для всех узлов во всех случаях.
У меня есть 100M записей в моем экземпляре neoj4, и он терпит неудачу, когда я пытаюсь co 'count()' на довольно большом наборе данных. Я бы не рекомендовал придерживаться этой идиомы, если вы не полностью уверены, что ваша система может справиться с этим. – tkroman
Нет проблем с запуском 'count()' на большом наборе данных с использованием Cypher в Neo4j 2.0 GA. Если у вас возникли проблемы, пожалуйста, задайте вопрос здесь, на Stackoverflow или билет поддержки, если вы являетесь клиентом Neo4j. –
Говорю вам, есть * проблема. Когда я запускаю 'start n = node (*) return count (*)' через веб-интерфейс, сервер зависает * полностью *. И я не единственный, кто переживает это. – tkroman