获取关注者列表以及当前用户是否遵循它们

时间:2014-05-17 07:49:02

标签: mongodb

我正在尝试以最便宜的成本和最佳性能实现以下目标: (请考虑数百万份文件):
我有这个系列:关注

{
“followee”: 12345,
“follower”:     54321,
“start”:        ISODate(“2013-08-21T12:34:00”),
“last”:     ISODate(“2013-08-23T06:00:00”),
“end”:      ISODate(“2013-08-23T07:50:23”)

}

上次是follower跟随followee时的最后一次扫描日期 现在在个人资料页面上,我获得了所有关注者(限制为10个),但我还想检查当前用户是否关注了关注者。
天真的解决方案是使用以下标准查询foreach关注者:'follower'=当前用户和'followee'= follower,如果结果为空,则返回false,否则为true。

我的问题是:有更好的解决方案吗?比如MAP REDUCE或其他东西,我是Mongodb的新手,所以也许有人可以帮助我这里 非常感谢

1 个答案:

答案 0 :(得分:1)

您可以使用$in operator,这样您就不必进行十次查询,只需一次,例如

// currentProfile.displayedFollowerIds = [ 32434, 54354, 656536, ... ]
db.followers.find( { followee : currentUser.Id, 
                     follower: {$in : currentProfile.displayedFollowerIds } });

MongoDB中的Map / Reduce不适用于即席查询; Map / Reduce操作在MongoDB中有相当多的开销,不应该像查询一样使用。

如果您有复杂的查询,可能需要查看aggregation framework