Я пытаюсь смоделировать отношения подписчиков между определенными пользователями в своем приложении:
пользователь ---- следует ---- пользователь
(думаю, Twitter)
Учитывая набор userIds, мне нужно вернуть все эти пользовательские вершины и логическое значение, если конкретный пользователь (currentUser
) имеет follows
край для этих пользователей. Поэтому мне нужно знать, подписан ли currentUser
на каждого из этих пользователей:
user1: правда
user2: правда
user3: ложь
user4: правда
Я застрял в том, как получить этот статус подписки. Если я верну каждую пользовательскую вершину так:
currentUser = g.V(1);
g.V().hasLabel("appUser").or(__.has("userId","123869681319429"),
__.has("userId","103659593341656")).valueMap();
Какой была бы эффективная команда, чтобы определить, есть ли у каждого из них входящее follows
ребро от currentUser
?
TitanDB 1.0.0 работает на DynamoDB.
Изменить - Добавление моего полного рабочего обхода:
g.V().hasLabel('appUser').or(__.has('cId', '1232'),__.has('cId', '1116')).group().by().by(__.in('follows').hasId(hasLabel('appUser').has('pId', 'd13dfa6').id()).count())
Изменить 2 - я переписал этот обход, чтобы лучше фиксировать нужные мне данные, используя as()
и select()
. Оставляем здесь для справки:
g.V().hasLabel('appUser').or(__.has('cId', '1232'),__.has('cId', '1116')).as('user','followCount').select('user','followCount').by(__.valueMap()).by(__.in('follows').hasId(hasLabel('appUser').has('pId', 'd13dfa6').id()).count())