如何从Meteor JS中的两个mongodb集合中连接(或联合)find()的结果?

时间:2015-07-08 13:15:48

标签: javascript mongodb meteor mapreduce

如何从Meteor JS中的两个mongodb集合中连接(或合并或联合)find()的结果? 我最好希望将它们作为单个游标对象加入,但是获取和转换为数组是可以接受的。我应该在以下代码中使用什么代替UNION?注意:我不需要删除重复的元素。连接就足够了。

allLocations: function(){
   location_set_1 = TableA.find({'loc':{$exists:1}},{loc:1,limit:300});
   location_set_2 = TableB.find({'loc':{$exists:1}},{loc:1,limit:300});
   combined_location_set = ??UNION??(location_set_1,location_set_2)
   return combined_location_set;
}

A(n不完整)解决方案可能如下,但它将返回一个数组。相反,我需要将游标对象返回到Meteor中的“帮助器”:

a=TableA.find()
b=TableB.find()
c=_.extend({},a.fetch(),b.fetch())
// c=[].concat(a.fetch()).concat(b.fetch());
return c;

1 个答案:

答案 0 :(得分:2)

那样的东西?

allLocations: function(){
   var location_set_1 = TableA.find({'loc':{$exists:1}},{loc:1,limit:300}).fetch();
   var location_set_2 = TableB.find({'loc':{$exists:1}},{loc:1,limit:300}).fetch();
   var result = [];
   for (i = location_set_1.length - 1; i >= 0; i --) {
       result.push(location_set_1[i]);
   }
   for (i = location_set_2.length - 1; i >= 0; i --) {
       result.push(location_set_2[i]);
   }
   return result;
}