Прямо сейчас я разрабатываю систему с базой данных Neo4j, где я должен иметь возможность проверки запроса, если свойство в узле до, равное или после предоставленного Date
.Neo4j Cypher, сравнивая даты в запросе Cypher
Как я должен хранить Date
внутри Neo4j узла недвижимости, чтобы иметь возможность сделать сравнение с Cypher запроса на основе, например простых операторов, как ==
, >
, <
Это хорошо хранить Date
как Long timestamp
? Будет ли это работать таким образом? Если нет, предложите лучшее решение.
ОБНОВЛЕНО
запросов я пытался не повезло:
MATCH (parentD)-[:CONTAINS]->(childD:Decision)-[ru:CREATED_BY]->(u:User) WHERE id(parentD) = {decisionId} MATCH (childD)<-[:SET_FOR]-(filterValue153:Value)-[:SET_ON]->(filterCharacteristic153:Characteristic) WHERE id(filterCharacteristic153) = 153 WITH filterValue153, childD, ru, u WHERE (filterValue153.value = '60305027689736')
MATCH (parentD)-[:CONTAINS]->(childD:Decision)-[ru:CREATED_BY]->(u:User) WHERE id(parentD) = {decisionId} MATCH (childD)<-[:SET_FOR]-(filterValue153:Value)-[:SET_ON]->(filterCharacteristic153:Characteristic) WHERE id(filterCharacteristic153) = 153 WITH filterValue153, childD, ru, u WHERE (filterValue153.value = 'Mon Dec 27 22:35:56 EET 3880')
Где filterValue153.value
хранился как java.util.Date
объекта в Value.value
узла собственности
@NodeEntity
public class Value extends Authorable {
public final static String NODE_NAME = "Value";
private final static String SET_FOR = "SET_FOR";
private final static String SET_ON = "SET_ON";
@Relationship(type = SET_FOR, direction = Relationship.OUTGOING)
private Decision decision;
@Relationship(type = SET_ON, direction = Relationship.OUTGOING)
private Characteristic characteristic;
private Object value;
...
}
на уровне базы данных для Value
У меня есть fo llowing данные:
id: 848013
value: 1482873001556
ОБНОВЛЕНО
Этот запрос работает отлично
MATCH (parentD)-[:CONTAINS]->(childD:Decision)-[ru:CREATED_BY]->(u:User) WHERE id(parentD) = {decisionId} MATCH (childD)<-[:SET_FOR]-(filterValue153:Value)-[:SET_ON]->(filterCharacteristic153:Characteristic) WHERE id(filterCharacteristic153) = 153 WITH filterValue153, childD, ru, u WHERE (filterValue153.value = 60305030539682)
но как иметь дело с датами до 1 января 1970 года, 00:00:00 GMT? Также можно ли применять =
, >
, <
операции в этом запросе Cypher по датам?
Спасибо за ваш ответ. Я уточнил свой вопрос с более подробной информацией. Не могли бы вы рассказать, что я делаю неправильно? Кроме того, не могли бы вы показать пример того, как это можно сделать с помощью старых и новых (с APOC) подходов? – alexanoid
Если вы просто вернете узел с этим запросом, какой результат вы получите? 'MATCH (filterCharacteristic153: Characteristic) WHERE id (filterCharacteristic153) = 153 RETURN *' –
Я добавил вывод из моего Neo4j для узла 'Value' – alexanoid