2017-04-16 11 views
0

私はmongodbでデータベースを作成し、現在は集計の使い方を学んでいますが、私は少し苦労しています。結果を返します。ここでの挿入は、次のとおりです。ここでMongodbアグリゲーションIDとグループで一致する

db.transaction.insert({"EmpId":"005","transaction":[{"TID":"O02","Date":"3/27/2017","product":[{"product_name":"COD","quantity":1,"amount":59.99}]},{"product_name":"Steam Gift Card","amount":25}], "Total" : "84.99"}); 
db.transaction.insert({"EmpId":"001","transaction":[{"TID":"O03","Date":"3/27/2017","product":[{"product_name":"COD","quantity":1,"amount":59.99}]},{"product_name":"Playstation Controller","amount":25}], "Total" : "84.99"}); 
db.transaction.insert({"EmpId":"003","transaction":[{"TID":"O04","Date":"3/27/2017","product":[{"product_name":"Unchartered 2","quantity":1,"amount":49.99}]}], "Total" : "49.99"}); 
db.transaction.insert({"EmpId":"003","transaction":[{"TID":"O05","Date":"3/27/2017","product":[{"product_name":"Playstation 4","quantity":1,"amount":359.99}]},{"product_name":"Battlefield 2","amount":49.99}], "Total" : "409.98"}); 
db.transaction.insert({"EmpId":"004","transaction":[{"TID":"O06","Date":"4/27/2017","product":[{"product_name":"COD","quantity":1,"amount":59.99}]},{"product_name":"Steam Gift Card","amount":50}], "Total" : "109.99"}); 
db.transaction.insert({"EmpId":"001","transaction":[{"TID":"O07","Date":"4/27/2017","product":[{"product_name":"CSGO","quantity":1,"amount":13.99}]},{"product_name":"GTA4","amount": 39.99}], "Total" : "53.98"}); 
db.transaction.insert({"EmpId":"002","transaction":[{"TID":"O08","Date":"5/27/2017","product":[{"product_name":"Sparta","quantity":3,"amount":17.99}]},{"product_name":"Action Figures","amount": 9.99}], "Total" : "63.96"}); 
db.transaction.insert({"EmpId":"005","transaction":[{"TID":"O09","Date":"3/27/2017","product":[{"product_name":"COD","quantity":1,"amount":59.99}]},{"product_name":"Steam Gift Card","amount":25}], "Total" : "84.99"}); 
db.transaction.insert({"EmpId":"002","transaction":[{"TID":"O10","Date":"5/27/2017","product":[{"product_name":"Playstation Headset","quantity":3,"amount":29.99}]},{"product_name":"GTA 4","amount": 39.99},{"product_name":"Unchartered 2","amount": 49.99}], "Total" : "119.97"}); 
db.transaction.insert({"EmpId":"004","transaction":[{"TID":"O11","Date":"5/27/2017","product":[{"product_name":"Harry Potter","quantity":2,"amount":12.99}]},{"product_name":"Lord Of The Ring's","amount": 9.99}], "Total" : "35.97"}); 

は私のクエリです:ここでは

db.transaction.aggregate([{ $match: {EmpId: "001"}}, { $group: {_id: "EmpId", total: {$sum: "Total"}}}]) 

は結果である:

{ "_id" : "EmpId", "total" : 0 } 

答えて

1

はまずそうでない場合は、文字列の代わりに "合計" の値の数を作成してください合計は機能しません。

db.transaction.insert({"EmpId":"005","transaction":[{"TID":"O02","Date":"3/27/2017","product":[{"product_name":"COD","quantity":1,"amount":59.99}]},{"product_name":"Steam Gift Card","amount":25}], "Total" : 84.99}); 
db.transaction.insert({"EmpId":"001","transaction":[{"TID":"O03","Date":"3/27/2017","product":[{"product_name":"COD","quantity":1,"amount":59.99}]},{"product_name":"Playstation Controller","amount":25}], "Total" : 84.99}); 
db.transaction.insert({"EmpId":"003","transaction":[{"TID":"O04","Date":"3/27/2017","product":[{"product_name":"Unchartered 2","quantity":1,"amount":49.99}]}], "Total" : 49.99}); 
db.transaction.insert({"EmpId":"003","transaction":[{"TID":"O05","Date":"3/27/2017","product":[{"product_name":"Playstation 4","quantity":1,"amount":359.99}]},{"product_name":"Battlefield 2","amount":49.99}], "Total" : 409.98}); 
db.transaction.insert({"EmpId":"004","transaction":[{"TID":"O06","Date":"4/27/2017","product":[{"product_name":"COD","quantity":1,"amount":59.99}]},{"product_name":"Steam Gift Card","amount":50}], "Total" : 109.99}); 
db.transaction.insert({"EmpId":"001","transaction":[{"TID":"O07","Date":"4/27/2017","product":[{"product_name":"CSGO","quantity":1,"amount":13.99}]},{"product_name":"GTA4","amount": 39.99}], "Total" : 53.98}); 
db.transaction.insert({"EmpId":"002","transaction":[{"TID":"O08","Date":"5/27/2017","product":[{"product_name":"Sparta","quantity":3,"amount":17.99}]},{"product_name":"Action Figures","amount": 9.99}], "Total" : 63.96}); 
db.transaction.insert({"EmpId":"005","transaction":[{"TID":"O09","Date":"3/27/2017","product":[{"product_name":"COD","quantity":1,"amount":59.99}]},{"product_name":"Steam Gift Card","amount":25}], "Total" : 84.99}); 
db.transaction.insert({"EmpId":"002","transaction":[{"TID":"O10","Date":"5/27/2017","product":[{"product_name":"Playstation Headset","quantity":3,"amount":29.99}]},{"product_name":"GTA 4","amount": 39.99},{"product_name":"Unchartered 2","amount": 49.99}], "Total" : 119.97}); 
db.transaction.insert({"EmpId":"004","transaction":[{"TID":"O11","Date":"5/27/2017","product":[{"product_name":"Harry Potter","quantity":2,"amount":12.99}]},{"product_name":"Lord Of The Ring's","amount": 9.99}], "Total" : 35.97}); 

フィールド名の代わりにグループクエリここ

db.transaction.aggregate([{ $match: {"EmpId": "001"}}, { $group: {_id: "$EmpId", total: {$sum: "$Total"}}}]) 

使用前「$」記号は結果である:

{ 
    "_id" : "001", 
    "total" : 138.97 
} 
+0

パーフェクトはあなたに感謝し、私はそれが動作するようになりましwouldntの理由を見ることができる完璧な理にかなっていますドキュメントに挿入された配列がある場合は、配列内の情報にアクセスするために最初に巻き戻す必要がありますか? – chris123

+0

はい。ここにサンプルコードがあります:http://stackoverflow.com/questions/13055462/group-by-specific-element-of-array-with-mongo-aggregation-framework –

関連する問題