Проверьте, работает ли это для вас. (давайте воспользуемся моим примером, чтобы получить нижнюю часть этого)
{
var(func: anyofterms(name, "Alexei Jack Jose Zoe Ivy")) @groupby(works_for) {
a as count(uid)
}
q(func: uid(a), orderdesc: val(a)) {
name
total_workers : val(a)
workHere: ~works_for @groupby(name){
count(uid)
}
}
}
Результат
Этот запрос не идеален, поскольку он использует невыполненную функцию для этого в GroupBy. Однако вы можете использовать это или ожидать улучшения функции GroupBy.
{
"data": {
"q": [
{
"name": "CompanyABC",
"total_workers": 6,
"workHere": [
{
"@groupby": [
{
"name": "Ivy",
"count": 2
},
{
"name": "Jack",
"count": 2
},
{
"name": "Zoe",
"count": 2
}
]
}
]
},
{
"name": "The other company",
"total_workers": 4,
"workHere": [
{
"@groupby": [
{
"name": "Alexei",
"count": 2
},
{
"name": "Jose",
"count": 2
}
]
}
]
}
]
}
}
Использование этого набора данных в качестве справочного материала: https://tour.dgraph.io/master/schema/2/
Я отредактировал его, и это выглядит так:
{
set {
_:company1 <name> "CompanyABC" .
_:company1 <dgraph.type> "Company" .
_:company2 <name> "The other company" .
_:company2 <dgraph.type> "Company" .
_:company1 <industry> "Machinery" .
_:company2 <industry> "High Tech" .
_:jack <works_for> _:company1 .
_:jack <dgraph.type> "Person" .
_:ivy <works_for> _:company1 .
_:ivy <dgraph.type> "Person" .
_:zoe <works_for> _:company1 .
_:zoe <dgraph.type> "Person" .
_:jack <name> "Jack" .
_:ivy <name> "Ivy" .
_:zoe <name> "Zoe" .
_:jose <name> "Jose" .
_:alexei <name> "Alexei" .
#duplicated
_:jack2 <name> "Jack" .
_:jack2 <works_for> _:company1 .
_:jack2 <dgraph.type> "Person" .
_:ivy2 <name> "Ivy" .
_:ivy2 <works_for> _:company1 .
_:ivy2 <dgraph.type> "Person" .
_:zoe2 <name> "Zoe" .
_:zoe2 <works_for> _:company1 .
_:zoe2 <dgraph.type> "Person" .
_:jose2 <name> "Jose" .
_:jose2 <works_for> _:company2 .
_:jose2 <dgraph.type> "Person" .
_:alexei2 <name> "Alexei" .
_:alexei2 <works_for> _:company2 .
_:alexei2 <dgraph.type> "Person" .
#duplicated end
_:jose <works_for> _:company2 .
_:jose <dgraph.type> "Person" .
_:alexei <works_for> _:company2 .
_:alexei <dgraph.type> "Person" .
_:ivy <boss_of> _:jack .
_:alexei <boss_of> _:jose .
}
}