我有一个有两个顶点的图,每个顶点都包含一个名为
interests
的属性,它是一个字符串数组。我想比较两个数组共有多少个字符串,以及数组是否包含某个字符串。
我试过以下查询,但它抛出一个错误:
SELECT * FROM cypher('QuirkyMatch', $$
MATCH (v:Person), (user:Person)
WHERE user.name = 'Sarah' AND v.age > (user.age + 1) AND v.interests CONTAINS 'Art'
RETURN v
$$) as (potential_match agtype);
ERROR: agtype string values expected
这是我创建它们的方式:
SELECT * FROM cypher('QuirkyMatch', $$
CREATE (:Person {
name: 'Alex',
age: 27,
occupation: 'Graphic Designer',
interests: ['Art', 'Photography', 'Traveling', 'Indies Music'],
weird_fact: 'I can hold up to 400 straws in my mouth. LOL.'
}),
(:Person {
name: 'Sarah',
age: 25,
occupation: 'Software Engineer',
interests: ['Hiking', 'Board Games', 'Sci-Fi Movies', 'Dungeons & Dragons', 'Painting', 'Art'],
weird_fact: 'I collect hot sauces and I have over 50 different ones :)'
})
$$) as (v agtype);
您可以对数组使用 IN 运算符。这是实现所需输出的方法。
SELECT * FROM cypher('new', $$
MATCH (v:Person), (user:Person)
WHERE user.name = 'Sarah' AND v.age > (user.age + 1) AND ('Art' IN v.interests)
RETURN v
$$) as (potential_match agtype);
尝试使用
IN
关键字代替。
SELECT * FROM cypher('QuirkyMatch', $$
MATCH (v:Person), (user:Person)
WHERE user.name = 'Sarah' AND v.age > (user.age + 1) AND 'Art' IN v.interests
RETURN v
$$) as (potential_match agtype);
这个答案100%是我自己的作品。