【问题标题】:Meteor: how to sort users by most following?Meteor:如何按最多关注度对用户进行排序?
【发布时间】:2016-02-06 04:23:50
【问题描述】:

欢迎...

我的 Meteor 项目中有 2 个集合

1 - 关注者

"_id": "_id",
  "follower": "username1",
  "following": "username2"
}

2- 用户

"_id": "_id",
  "username": "username",
  [...]
}

我想按照以下方式对用户进行排序

谁能帮帮我?....

【问题讨论】:

  • 让我知道这是否对您有帮助或有用。如果有效,请将其标记为答案,如果您不介意。

标签: javascript mongodb meteor


【解决方案1】:

我建议将“关注者”集合作为一个对象放入每个“用户”文档中。将它们放在单独的集合中然后必须根据用户的 ID 来回引用是没有意义的。它只是在您的数据库中占用更多空间。只需在每个用户内部创建一个名为“follows”的对象或具有相同结构的类似对象(尽管创建“follower”和“following”数组)。像这样的:

"users":{
    "_id":_id,
    "username":"username",
    "follows":{
        "followers":["username 1","username 2"],
        "following":["username 3", "username 4"],
    }
}

一旦你有了它,每个用户文档都有它自己的“关注”对象,你可以使用“聚合”功能MongoDB Aggregate对用户进行排序。以下代码根据跟随者数组的长度进行排序。你会为“following”做一个单独的,用“$following”换出“$followers”。

db.users.aggregate(
   [
      {
         $project: {
           "length": { $size: "$followers" }
         },
         { "$sort": { "length": -1 } },
      }
   ]
)

当然,这可能需要一些调整。只是帮助您朝着正确的方向前进。

【讨论】:

猜你喜欢
  • 2019-05-01
  • 1970-01-01
  • 2011-08-30
  • 2011-11-24
  • 2022-01-12
  • 2012-05-22
  • 2012-12-07
  • 2012-11-30
相关资源
最近更新 更多