Reputation: 15
Hi ive created a database in mongodb and have created inserts im currently just learning how to use aggregation and i am struggling a little bit with it and was looking for some help as to why my command wont return any results. Here are the inserts:
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"});
Here is my query:
db.transaction.aggregate([{ $match: {EmpId: "001"}}, { $group: {_id: "EmpId", total: {$sum: "Total"}}}])
Here is the result:
{ "_id" : "EmpId", "total" : 0 }
Upvotes: 0
Views: 1778
Reputation: 682
Firstly please make "Total" value a number instead of string, otherwise sum will not work.
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});
Use '$' symbol before field name instead group query
db.transaction.aggregate([{ $match: {"EmpId": "001"}}, { $group: {_id: "$EmpId", total: {$sum: "$Total"}}}])
Here is the result:
{
"_id" : "001",
"total" : 138.97
}
Upvotes: 1