2016-04-17 49 views
1

我有以下代碼來查詢集合並獲得一些結果。結果後插入多個文檔

var subquery = {"shipdate" : { 
    "$gte" : 19960101, 
    "$lt" : 19960401 } 
}; 

var eachsupp = db.lineitems.aggregate([ 
    { $match : subquery }, 
    { $project : { 
     "_id" : 0, 
     "revenue" : {$multiply : ["$extendedprice", {$subtract : [1, "$discount"] }] }, 
     "supplier_no" : "$partsupp.supplier.suppkey", 
     "name" : "$partsupp.supplier.name", 
     "address" : "$partsupp.supplier.address", 
     "phone" : "$partsupp.supplier.phone" }}, 
    { $group : { 
     _id : "$supplier_no", 
     total_revenue : { $sum : "$revenue" }, 
     name : {$first : "$name"}, 
     address : {$first : "$address"}, 
     phone : {$first : "$phone"} }} 
]); 

之後,我有這樣的結果:

{ "_id" : 5, "total_revenue" : 39995.208, "name" : "Supplier#000000005", "address" : "Gcdm2rJRzl5qlTVzc", "phone" : "21-151-690-3663" } 
{ "_id" : 138, "total_revenue" : 37736.3465, "name" : "Supplier#000000138", "address" : "utbplAm g7RmxVfYoNdhcrQGWuzRqPe0qHSwbKw", "phone" : "29-533-434-6776" } 

而更像。我想將它插入到tmp集合中。像這樣:

db.tmp.insert(eachsupp.result); 

db.tmp.find().sort({total_revenue : -1}).limit(1); 

但是我有一個錯誤,因爲它無法插入。

db.tmp.insert(eachsupp.result); 
2016-04-17T23:12:20.683+0100 E QUERY [thread1] Error: no object passed to ins 
ert! : [email protected]/mongo/shell/collection.js:226:1 
@(shell):1:1 

回答

1

中添加這您聚合

{ $sort: { total_revenue: -1 } }, 
{$out: "eachsupp"} 

排序會根據total_revenue排序結果, 輸出將寫入新的集合。

1

我想更換db.tmp.insert(eachsupp.result);

與此eachsupp.forEach(function(document){db.tmp.insert(document)});

eachsupp.result是拋出異常

eachsupp是遊標,迭代光標環和插入每一個