Neo4j Матч по спискам - PullRequest
       3

Neo4j Матч по спискам

1 голос
/ 09 апреля 2020

Так что в Neo4j, если у вас есть различные узлы, и у них есть свойство со значением 1 следующим образом:

n.stringProp = "something"

Тогда вы можете получить различные узлы, которые соответствуют любому свойству в списке запросов, используя запрос MATCH как

MATCH (n) 
WHERE n.stringProp IN ["something", "somethingElse", "etc"]
RETURN n

Однако, если у вас есть узлы со свойствами, которые являются списками, выполните следующие действия:

n.stringListProp = ["red", "purple", "green"]

И вы хотите получить узлы, которые имеют один или несколько тегов в список запросов в их свойствах списка, то вы не можете просто сделать запрос, как:

MATCH (n)
WHERE n.stringListProp IN ["red"]
RETURN n

И вы также не можете использовать CONTAINS, потому что это для подстрок. Таким образом, вы не можете сделать:

MATCH (n)
WHERE n.stringListProp CONTAINS "red"
RETURN n

И вы не можете l oop через них использовать FOREACH, потому что FOREACH предназначен только для операций CREATE, MERGE или DELETE. Поэтому я думаю, что вы должны использовать UNWIND для этого типа запроса MATCH, но я действительно не уверен, как структурировать этот запрос.

Если кто-нибудь знает, как это сделать, не могли бы вы мне помочь?

1 Ответ

2 голосов
/ 09 апреля 2020

Согласно комментариям к моему Вопросу, ЛЮБАЯ предикатная функция решает эту проблему.

См. Запрос MATCH ниже:

MATCH (n)
WHERE ANY (color IN n.stringListProp WHERE color IN ["red", "pink", "cyan"])
RETURN n

Этот запрос проверит, есть ли какой-либо из элементов со свойством stringListProp, какие-либо элементы в списке запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...