mongo聚合查詢遇到的一個問題
目前對mongo資料庫的一張表做一些聚合查詢的操作,考慮到資料量太大,從資料庫查尋出來結果還是需要插入到資料庫,故決定,將查詢結果插入到一個臨時的集合中,使用mongo的$out操作。根據業務需求,需要執行三次這樣的聚合查詢,測試發現$out輸出到新的集合是,執行替換操作,而不是append操作,以下是官網解釋:
The $out operation creates a new collection in the current database if one does not already exist.
If the collection specified by the $out operation already exists, then upon completion of the aggregation, the $out stage atomically replaces the existing collection with the new results collection. The $outnotation doindex collection.
現在我仍然有這樣的需求,將多次聚合的結果放在一張表中,該怎麼做?
滿天的星座2017-05-02 09:20:44
從2.6開始aggregation的回傳值是一個遊標。既然是遊標,就不要求你在客戶端把整個結果集緩存到內存中再操作,很直接的想法就是遍歷這個遊標,一條一條插進目標集合就可以了。例如在shell:
db.coll.aggregate([...]).forEach(function(doc) {
db.target_coll.save(doc);
});