2013-06-18 48 views
2

是的,我在此查看了其他联盟问题,但是这看起来有所不同。在没有使用map/reduce的情况下在MongoDB中进行联盟查询

这里是SQL查询,我想为蒙戈

SELECT column1 from table1 

UNION 

SELECT column1 from table2 

转换在我蒙戈的数据库,我可以有多达12个系列,每个一个月。

data.2013.01 
data.2013.02 
. 
. 
data.2013.12 

当绘图时,我想一次在图上显示多个月。这给我们带来了一个问题,如何在Mongo中创建UNION。

+0

你知道聚合框架吗? –

+0

@ZagorulkinDmitry我是新来的mongo,现在检查。你知道什么可以工作吗? – functionoid

+0

我检查了聚合框架。它有像$ group这样的管道和运营商。不过,他们仍然只在单一收藏上工作。建议? – functionoid

回答

4

我觉得最终的结论,你就来为您的模式是不正确。将所有具有相同目的和形状的物体放入一个集合中。这就是如何与mongodb协调工作的。按月收集是一个错误,会导致你与mongo无尽的不必要的战斗。一旦按照预期在一个集合中包含了所有内容,聚合就可以根据aggregation example of usernames ordered by join month按月为您处理分组。

+0

我明白你的观点,我认为这是有效的,例如在你提供的链接中。然而,我的应用程序类似于网站分析,不过出于不同的目的,它会跟踪不同的数字。每个集合将具有月份的汇总数据,每个文档将具有一天的汇总数据和一天中的每个小时的嵌入文档。像这样组织数据会使读取速度非常快。对于数月的数据,如果我使用您提供的样本,我只会查询30个文档,而不是数千个。正如我所提到的,链接方法可能适用于其他场景。 – functionoid

+0

似乎,我是mongo的新手,并且仍然在为应用程序找出功能,这让我错过了你的观点。我可以保持文档的结构与我的相同,但应将所有文档放在一个集合中。说得通。对不起,我没有第一次读到你的答案。谢谢@Peterlyons – functionoid

+1

请记住,您还可以从主集合映射/减少到特定月份的集合,并获得快速/缓存读取。但是mongo需要在单个集合上进行操作,这种集合的定义是“无论您需要mongo来运行操作”,这就是您的规范数据需要存活的地方。 –

相关问题