Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Meteor JS中连接(或联合)来自两个mongodb集合的find()结果?_Javascript_Mongodb_Meteor_Mapreduce - Fatal编程技术网

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

Javascript 如何在Meteor JS中连接(或联合)来自两个mongodb集合的find()结果?,javascript,mongodb,meteor,mapreduce,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

如何在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;
}
(n个不完整)解决方案可能如下所示,但它将返回一个数组。相反,我需要将光标对象返回给Meteor中的“助手”:

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

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;
}

(n个不完整)解决方案可能如下所示,但它将返回一个数组。我需要向Meteor中的“helper”返回一个游标对象:a=LocLogger.find()b=MessagesTable.find()c=\.extend({},a.fetch(),b.fetch())//c=[].concat(a.concat(b);返回c;对不起,实际上有两张不同的桌子。我修正了帖子。请在你的帖子中加入你的问题的任何附加信息。避免在评论中添加此内容,因为它们更难阅读,也更容易删除。谢谢。我更新了帖子。太好了!这就解决了目前的问题。但是,在不实际获取数据的情况下,是否仍然可以执行此操作?使用.fetch()时唯一的问题是,如果将结果数组传递到其他地方,则结果数组将不会是被动的。但在您的情况下,没有问题,因为在哪里调用.fetch(),当数据更改时,计算将重新运行。如果不使用fetch,则可以使用forEach:var cursor=Collection.find();forEach(函数(el){…});您可以使用:return\uu.union(location\u set\u 1,location\u set\u 2)删除这两个for块:谢谢。我应该在哪里调用/使用Meteor中的“forEach”?在助手里面?或者在{{spacebar}}内?将forEach计算放在客户端的帮助程序内。您可以在{{..}内调用函数