我正在努力计算每个用户的平均传出边缘数。我试过了
g.V().hasLabel('user').as('users').outE('IS_FRIENDS_WITH').project('usersC', 'edgesC').by(__.select('users').count()).by(__.count()).next()
它只返回 {'userC': 1, 'edgesC': 1} 的映射列表,回想起来这是有道理的。
我尝试了其他一些事情,遇到了诸如计数或项目如何有效折叠/结束遍历、sideEffect 没有按照我希望的方式执行等问题。
关键是聚合步骤:
await gr.V().hasLabel('user').aggregate('usersCount').outE('IS_FRIENDS_WITH').aggregate('edgesCount').project('usersC', 'edgesC').by(__.select('usersCount').count(gremlin.process.scope.local)).by(__.select('edgesCount').count(gremlin.process.scope.local)).math('edgesC / usersC').next();