mongodb中不使用map/reduce的联合查询



如何将以下SQL查询转换为mongo:

SELECT column1 from table1
UNION
SELECT column1 from table2

我最多有12个收藏,每个月一个:

data.2013.01
data.2013.02
...
...
data.2013.12

绘图时,我想一次在图形上显示多个月。这就引出了一个问题,如何在mongo中创建UNION。

我认为你最终会得出的结论是你的模式是不正确的。把所有用途和形状相同的物品放在一个集合中。这就是如何与mongodb协调工作。按月收款是一个错误,它会给你带来无休止的不必要的争斗。一旦在一个集合中按预期完成了所有内容,聚合就可以按照按联接月份排序的用户名的聚合示例为您处理按月分组。

先读:

http://docs.mongodb.org/manual/reference/sql-aggregation-comparison/

mongo没有类似union的东西,但我认为$or将对您的需求有用。

阅读这个答案:https://stackoverflow.com/a/14928646/1321404

Mongo 4.4开始,聚合框架提供了一个新的$unionWith阶段,执行两个集合的并集(两个集合的组合管道结果到单个结果集):

// collection1:
//   { "date" : "2013-12-27", "origin" : "collection1" }
//   { "date" : "2017-03-11", "origin" : "collection1" }
// collection2:
//   { "date" : "2014-11-02", "origin" : "collection2" }
db.collection1.aggregate([
  { $unionWith: "collection2" },
  { $project: { date: true } }
])
// { "date" : "2013-12-27" }
// { "date" : "2017-03-11" }
// { "date" : "2014-11-02" }

请注意,您可以通过先选择列,然后执行联合来获得相同的结果(在执行联合之前,可以将正在组合的集合应用聚合管道):

db.collection1.aggregate([
  { $project: { date: true } },
  { $unionWith: {
      coll: "collection2",
      pipeline: [{ $project: { date: true } }]
  }}
])

相关内容

  • 没有找到相关文章

最新更新