让我们考虑用NodeJS和MongoDB构建的社交网络。
因此,如果用户创建了一个新帖子,它应该保存到他/她的关注者动态中。
这个操作的直接实现如下(简化):
当粉丝数量很大时,这种方法的性能非常低。如何使用单个高性能的MongoDB查询来完成此操作?
这个操作的直接实现如下(简化):
var newPost="New Post";
//get list of followers of user 1
var listOfFollowers = followersCollection.find({u:"1"});
for(var i=0;i<listOfFollowers.length;i++){
var followerId = listOfFollowers[i]._id;
//insert new post of user 1 to every follower feed
feedsCollection.insertOne(
{ownerId:followerId,authorId:"1",content:newPost}
);
}
当粉丝数量很大时,这种方法的性能非常低。如何使用单个高性能的MongoDB查询来完成此操作?