【问题标题】:how to find most mutual friend or follower?如何找到最多共同的朋友或追随者?
【发布时间】:2021-09-09 03:08:26
【问题描述】:

我有一个朋友列表,这些朋友有一个他们自己的朋友列表,我需要为我计算最共同的朋友。我正在使用 MongoDB 作为数据库。

我的用户架构

    id: {
    type: String,
    require: true,
    unique: true
},
    followers: [{
        type:mongoose.Schema.ObjectId,
        ref: 'User'
    }],
    following: [{
        type:mongoose.Schema.ObjectId,
        ref: 'User'
    }]
})

我不确定,但是否可以在 MongoDB 中使用聚合来实现此功能。

【问题讨论】:

    标签: mongodb mongodb-query nosql aggregation-framework aggregation


    【解决方案1】:

    您可以使用此聚合查询。

    1. 根据 _id 查找两个用户。 (这应该返回 2 个文档)。

    2. 使用 $first 和 $last 对文档进行分组。 (这将合并两个文档)。

    3. 使用 Project 阶段查找计数($setIntersection 将为您提供数组的相互元素,然后您可以计算大小)。

      [{
      '$match': {
          '_id': {
              '$in': [
                  ObjectId('60d90d5163326a4760b68ee3'), ObjectId('60d90d5dc498a4477a039d28')
              ]
          }
       }
      }, {
      '$group': {
          '_id': 0, 
          'set1': {
              '$first': '$following'
          }, 
          'set2': {
              '$last': '$following'
          }
       }
      }, {
      '$project': {
          'mutual': {
              '$setIntersection': [
                  '$set1', '$set2'
              ]
          }, 
          'count': {
              '$size': {
                  '$setIntersection': [
                      '$set1', '$set2'
                  ]
              }
          }
       }
      }]
      

    【讨论】:

    • 我想你的答案是在两个朋友之间寻找共同的朋友?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多