2015-11-21 2 views
1

, имеющее свойство для пользователей, которые являются FALSE, когда пользователь по-прежнему активен или имеет отметку времени, когда пользователь ушел. Я хочу поймать пользователей, которые присутствуют во время timewindow. Я понял, что Cypher не имеет сопоставления даты для запроса, например. для МЕЖДУ (месяц/год) И (месяц/год), поэтому я поставил временные метки на свойства.Сравните свойство, которое может быть отметкой времени или FALSE

Я пытался заставить пользователь по данному запросу:

MATCH (u:User) WHERE u.end_date IS FALSE OR u.end_date > 1422658800 RETURN u 

Это должно вернуть все пользователям, которые все еще активны (end_date = FALSE) или если end_date находится за пределами текущего времени (здесь 1422658800).

К сожалению, я придерживался требований NEO4J: не знаю, как это сравнить. Left: false (Boolean); Справа: 1422658800 (длинный)

Я надеялся, что он либо примет логическое, либо целочисленное значение, но, похоже, проверяет оба условия и терпит неудачу при сравнении Boolean с Long Integer - это нормально.

Любая идея, как я мог бы построить запрос, который может обрабатывать оба критерия, чтобы я мог фильтровать правильных пользователей?

Спасибо, Balael

ответ

1

Я бы просто не хранить END_DATE, если он не был установлен, просто удалить свойство.

Затем вы можете использовать:

MATCH (u:User) 
WHERE coalesce(u.end_date,2^32) > 1422658800 
RETURN u 

Если вы хотите придерживаться модели, который я не поощрять. Вы можете сначала превратить свое булево число в число.

MATCH (u:User) 
WHERE (case u.end_date when false 2^32 else n.foo end) 
     > 1422658800 
RETURN u 
+0

Спасибо за отзыв, я изменю модель, это проще :) – Balael

Смежные вопросы