lucacanella commented :
I think I stumbled upon the same need.
I created a fictional case that should describe what I’m asking, please see details below:
Scenario
A classic person-rated-movie scenario, I want to find who gave the same rates to one or more movies I rated. Imagine following scenario:
(P1)-[Rated: 3].
\
(Movie 1)-[Rated: 5]-(Me)
/
(P2)-[Rated: 5]'
The matching pattern for my query should be: (P2)-[Rated: 5]->(Movie 1)<-[Rated: 5]-(Me)
Example
Please find example schema, data and queries in the attachment.
dgraph-facets-filter-variable.txt
What I tried to do
The query starts from node “(Me)”, then gets all rated movies with facets. Actual rates are an int facet for “rated” predicate, so for each movie I want to find all the people that rated that same movie given the value of the rate is the same that has been detected first. I tried to achieve it this way:
{
scenario(func: type("Person")) @filter(eq(name,"Me")) @ignorereflex {
name
rated @facets(r as rate) {
name
~rated @facets(eq(rate, val(r))) {
name
}
}
}
}
I obviously get this error:
Error Name: t
Message: line 9 column 24: variables are not allowed in facets filter.
I tried other ways, like treating ratings as nodes, but still could’nt get away with this.
Hardcoding a value, instead of using a variable with val, succedes:
{
scenario(func: type("Person")) @filter(eq(name,"Me")) @ignorereflex {
name
rated @facets(rate) {
name
~rated @facets(eq(rate, 5)) {
name
}
}
}
}