2016-01-07 21 views
1

我有兩個mongo集合。我們可以調用一個模板,其次是實例。每次創建新實例時,都會將相當大的數據字段從模板複製到實例。目前,該字段是從應用程序中的mongo db模板集合中檢索的,然後作爲實例集合插入的一部分發送回db。將數據字段從一個mongo集合複製到另一個,在db服務器上

是否可以直接在蒙戈DB不知何故執行上插入這個副本,以避免通過網絡發送幾兆字節來回?

Kadira正在報告由於這個3秒滯後。文件只會越來越大。

我用的流星,但據我瞭解,應該沒有太大的影響答案。

回答

0

我已經做了一些搜索和我真的不能爲您找到一個完美的解決方案。這兩種方式我能想到這樣做的有:

1)創建一個進程運行蒙戈命令通過db.collection.copyTo到您的模板複製爲您的新實例()。

http://eureka.ykyuen.info/2015/02/26/meteor-run-shell-command-at-server-side/ https://docs.mongodb.org/manual/reference/method/db.collection.copyTo/

或者

2)嘗試訪問原始蒙戈集合,而不是minimongo收集流星爲您提供這樣你就可以使用附帶的db.collection.copyTo()功能蒙戈。

var rawCollection = Collection.rawCollection(); 
rawCollection.copyTo(newCollection); 

Can meteor mongo driver handle $each and $position operators?

我還沒有試過訪問rawCollection,看是否CopyTo從可用,而且我也不知道會不會它帶入流星寫出新的集合之前。我只是把它作爲你的想法扔在這裏;希望別人有更好的一個。

+0

嗯。 CopyTo可能值得調查。雖然它似乎要複製整個集合,而不是單個文檔。 –

+0

您也可以嘗試批量操作:http://stackoverflow.com/questions/27039083/mongodb-move-documents-from-one-collection-to-another-collection –

+0

CopyTo從似乎並沒有提供對rawCollection() - 至少從流星1.4.1開始 –

相關問題