Meteor:如何按以下方式对用户进行排序?

时间:2016-02-05 19:30:39

标签: javascript mongodb meteor

欢迎......

我的Meteor项目中有2个系列

1 - 粉丝

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

2-用户

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

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

任何人都可以帮助我吗?....

1 个答案:

答案 0 :(得分:4)

我建议把这些'粉丝'收集作为每个用户内部的对象'文献。将它们放在单独的集合中然后必须根据用户的ID来回引用是没有意义的。它只占用了你的数据库中的更多空间。只需在每个用户中创建一个名为'的对象'或者具有相同结构的类似东西(虽然make' follower'以及'在'数组之后)。像这样:

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

一旦你拥有它,所以每个用户文档都有自己的'跟随'对象,您可以使用'聚合'对用户进行排序。功能MongoDB Aggregate。以下代码根据关注者数组的长度进行排序。你可以单独选择一个''交换“追随者”#39;使用" $跟随"。

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

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