Gremlin Neptune查询添加tv_shows顶点是否需新增sideEffect?
问题解答
不需要单独新增sideEffect,直接在原有的sideEffect步骤里同时收集电影和剧集即可。
原查询的sideEffect用来存储当前用户评分过的电影,现在要加入tv_shows顶点,只要用户对剧集的评分关系也是用rated边,就可以在同一个sideEffect里扩展收集范围:
- 把原
out('rated').store('movies')改成out('rated').hasLabel('movie','tv_show').store('common_items')(这里假设电影顶点标签是movie,剧集是tv_show,可根据实际标签调整) - 后续统计好友正面评分的共同内容时,把
where(within('movies'))改成where(within('common_items')),用统一的集合变量即可,不用额外维护多个sideEffect。
修改后的完整查询代码:
g.V('c3833064-94aa-4084-9c0e-029543d69892').as('self') .sideEffect(out('rated').hasLabel('movie','tv_show').store('common_items')) .out('friended') .group() .by() .by(outE('rated') .where(values('rating').is(gt(5))) // 筛选好友给出正面评分的共同内容 .inV() .where(within('common_items')).count()) .order(local) .by(values,desc) .unfold().limit(10) .select(keys) .project('id','label','username', 'avatarUrl', 'name') .by(id) .by(label) .by('username') .by(coalesce(values('avatarUrl'), constant(''))) .by('name')
如果用户对剧集的评分用的是不同边(比如rated_tv),也可以用union合并两种边的结果,同样不用新增sideEffect:
.sideEffect(union(out('rated'), out('rated_tv')).store('common_items'))
内容的提问来源于stack exchange,提问作者Programjon
相关产品推荐
相关产品推荐

