如何使用聚合'$ out'在集合之间迁移数据,但不同的数据库?

时间:2016-05-24 09:00:02

标签: mongodb mongodb-aggregation

我正在使用聚合框架将数据从一个集合迁移到另一个集合。以下是代码示例:

db.oldCollection.aggregate([{$out : "newCollection"}])

oldCollection中的newCollection索引不会在newColleciton中复制。

但有没有什么方法可以将它直接移动到同一个MongoDB主机上的不同数据库中,并且有任何选项可以阻止覆盖/替换集合中的整个数据。我的意思是保留对SELECT T1.[LocationName], Monday, LastMonday, LastMonday-Monday AS [Difference] FROM ( SELECT CASE WHEN GROUPING([LocationName]) = 1 THEN 'Total' ELSE [LocationName] END [LocationName], COUNT(OI.LocationID) as Monday FROM OrderInfo AS OI LEFT JOIN LocationInfo AS LI ON OI.LocationID = LI.LocationID WHERE DateReceived = '2016-05-23' GROUP BY ROLLUP(LI.LocationName) ) AS T1 LEFT JOIN ( SELECT CASE WHEN GROUPING([LocationName]) = 1 THEN 'Total' ELSE [LocationName] END [LocationName], COUNT(OI.LocationID) as LastMonday FROM OrderInfo AS OI LEFT JOIN LocationInfo AS LI ON OI.LocationID = LI.LocationID WHERE DateReceived = '2016-05-16' GROUP BY ROLLUP(LI.LocationName) ) AS T2 ON T1.LocationName=T2.LocationName ORDER By T1.[LocationName]

所做的更改

根据MongoDB文档:

  

$ out stage原子地用新的结果集合替换现有的集合。 $ out操作不会更改前一个集合中存在的任何索引。

1 个答案:

答案 0 :(得分:0)

我不认为这是可能的。如果你真的想导出到其他数据库;将中间结果保存在某处并通过创建另一个看起来令人头疼的数据库进行填充