mongodb的学习 (3)

it2022-05-06  1

聚合函数

- 添加基础数据:db.local.save({contry:'中国',name:'小明',score:77});db.local.save({contry:'中国',name:'小红',score:88});db.local.save({contry:'中国',name:'小张',score:99});db.local.save({contry:'美国',name:'jack',score:45});db.local.save({contry:'美国',name:'rose',score:67});db.local.save({contry:'美国',name:'mick',score:89});

 

- 需要求当前集合的记录数:- `db.local.find().count();`

- 求最大值 -求整个集合的总成绩 + db.集合名.聚合({ 组的划分规则{_id:'1',显示内容:{$sum:'$score'}} }) - 求所有人的平均分 - `db.local.aggregate({$group:{_id:'$contry',sumscore:{$avg:'$score' } }});`

- 求按国家分组,求所有国家的总分 - `db.users.aggregate({$group:{_id:'$contry',sumScore:{$sum:'$score'}}});`

 

 

 

 

联合查询

db.orders.insert([ { "_id" : 1, "item" : "almonds", "price" : 12, "quantity" : 2 }, { "_id" : 2, "item" : "pecans", "price" : 20, "quantity" : 1 }, { "_id" : 3 }]);db.inventory.insert([ { "_id" : 1, "sku" : "almonds", description: "product 1", "instock" : 120 }, { "_id" : 2, "sku" : "bread", description: "product 2", "instock" : 80 }, { "_id" : 3, "sku" : "cashews", description: "product 3", "instock" : 60 }, { "_id" : 4, "sku" : "pecans", description: "product 4", "instock" : 70 }, { "_id" : 5, "sku": null, description: "Incomplete" }, { "_id" : 6 }]);db.orders.aggregate([ { $lookup: { from: "inventory", localField: "item", foreignField: "sku", as: "inventory_docs" } }]);```

效果:

> show dbs; admin 0.000GB config 0.000GB local 0.000GB mini_db 0.001GB > db.mini_db.insert([ ... { "_id" : 1, "item" : "almonds", "price" : 12, "quantity" : 2 }, ... { "_id" : 2, "item" : "pecans", "price" : 20, "quantity" : 1 }, ... { "_id" : 3 } ... ]); BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 3, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] }) > db.config.insert([ ... { "_id" : 1, "sku" : "almonds", description: "product 1", "instock" : 120 }, ... { "_id" : 2, "sku" : "bread", description: "product 2", "instock" : 80 }, ... { "_id" : 3, "sku" : "cashews", description: "product 3", "instock" : 60 }, ... { "_id" : 4, "sku" : "pecans", description: "product 4", "instock" : 70 }, ... { "_id" : 5, "sku": null, description: "Incomplete" }, ... { "_id" : 6 } ... ]); BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 6, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] }) > db.mini_db.aggregate([ ... { ... $lookup: ... { ... from: "config", ... localField: "item", ... foreignField: "sku", ... as: "config_docs" ... } ... } ... ]); { "_id" : 1, "item" : "almonds", "price" : 12, "quantity" : 2, "config_docs" : [ { "_id" : 1, "sku" : "almonds", "description" : "product 1", "instock" : 120 } ] } { "_id" : 2, "item" : "pecans", "price" : 20, "quantity" : 1, "config_docs" : [ { "_id" : 4, "sku" : "pecans", "description" : "product 4", "instock" : 70 } ] } { "_id" : 3, "config_docs" : [ { "_id" : 5, "sku" : null, "description" : "Incomplete" }, { "_id" : 6 } ] } >

 

转载于:https://www.cnblogs.com/guangzhou11/p/10161963.html


最新回复(0)