Azure CosmosDB中使用无Lambda的Gremlin查询用户未关联电影顶点
未观看用户-电影组合查询方案(适配Azure Cosmos DB)
性能方案选型
- 中小规模场景(电影总数量≤1万):直接使用纯Gremlin语句查询,无需额外开发,性能满足要求。
- 大规模场景(电影总数量>1万):建议应用侧缓存全量电影ID列表,每次查询时先拉取对应用户的已观看电影ID列表,在应用层做差集计算,避免图数据库全量扫描和集合匹配操作,性能提升更明显。
无Lambda的Gremlin查询语句
完全兼容Azure Cosmos DB的Gremlin语法,无任何Lambda表达式:
g.V().hasLabel('user').as('user') .V().hasLabel('movie').where(__.not(in('watched').as('user'))) .project('user', 'unwatched_movie') .by(select('user').values('id')) .by(values('id'))
输出结果(匹配示例预期)
- ["bob", "movie3"]
- ["bob", "movie4"]
- ["jose", "movie1"]
- ["jose", "movie2"]
- ["jose", "movie4"]
- ["frank", "movie1"]
- ["frank", "movie2"]
- ["frank", "movie3"]
- ["frank", "movie4"]
- ["peter", "movie1"]
- ["peter", "movie2"]
- ["peter", "movie3"]
内容的提问来源于stack exchange,提问作者Manuel Hummler
相关产品推荐
相关产品推荐

