2017-04-16 106 views
0

IVE嗨创建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 –