现在有一个 db.follow
{uid:111, follows:[001, 002, 003]}
{uid:222, follows:[005, 006, 007, 008]}
...
然后有一个 db.post
{id:00001, uid:001, text:'...'}
{id:00002, uid:001, text:'...'}
{id:00003, uid:005, text:'...'}
目的
- 取出某个用户 /关注的对象 /所发出的帖子。
- 帖子以
_id或发帖时间倒序排列。 - 包含翻页功能。
方法
follows = db.follow.find_one({uid:111}).follows
db.post.aggregate([
{$match: {uid: {$in:follows}}},
{$sort: {_id:-1}},
{$limit: 10}
])
大致是这么个思路。
请问
- 有什么更高效简洁的写法吗?
- 有办法把第一步取数组放到 aggregate 内吗?
- 爬虫经常看到翻页是给出下一页第一条 post 的 id,然后把这个作为起始 id 再去取下一页,这个怎么实现的?
