鉴于以下Mongo集合:
我的目标是将光标移动到给定用户所关注的任何一位作者撰写的所有文章。
目前我必须分几步完成:
第2步非常低效。我当前正在获取整个结果,将其重组为数组,然后将其作为查询的一部分发送回数据库。所有这一切都必须在Javascript中完成(在Meteor / Node.js上运行)。
有更好的解决方案吗?
答案 0 :(得分:0)
要获取followers
集合中所有用户的数组,请使用$ addToSet aggregate命令。
db.followers.aggregate([{ $match: { followerId: 'abcd' } },
{$group: {_id: 0, following: {$addToSet: '$followeeId'} } }]);
这将为您提供如下结果:
{ id: 0, following: ['xxx', 'yyy', 'zzz'] }
答案 1 :(得分:0)
我想你想在客户端使用游标,所以你需要加入两个集合
您可以使用其中一个软件包执行此操作:https://hackpad.com/Meteor-reactive-join-publication-packages-MpSFfsZrMxa
我正在使用smartPublish,就像这样
服务器:
Meteor.smartPublish("articles", function () {
this.addDependency("MyJoinCollection","followerId",function(obj){
//return a cursor of articles written by the followee found
return Articles.find({author:obj.followeeId})
})
// return a cursor corresponding to all the followee of the current user
return MyJoinCollection.find({followerId:this.userId})
})
客户端
Meteor.subscribe("articles")
//returns all articles from all users that current user is following
Articles.find()
如果您想要特定用户,则必须将其作为参数提供给订阅/发布