~~CLOSETOC~~ |<100% 25% - >| ^ \\ DATA ANALYTICS REFERENCE DOCUMENT\\ \\ ^^ ^ Document Title:|Applied Databases Mongo DB II Worksheet| ^ Document No.:|1553017429| ^ Author(s):|Gerhard van der Linde| ^ Contributor(s):| | **REVISION HISTORY** |< 100% 10% - - 10% 17% 10% >| ^ \\ Revision\\ \\ ^\\ Details of Modification(s)^\\ Reason for modification^ \\ Date ^ \\ By ^ | [[:doku.php?id=submissions:worksheet:databases:topic7&do=revisions|0]] |Draft release|Applied Databases Mongo DB II Worksheet| 2019/03/19 17:43 | Gerhard van der Linde | ---- ====== Applied Databases - Topic 7 ====== ===== 1. Import lab7.json to MongoDB. ===== mongoimport --db w7 --collection cityinfo --type json --file ../../../documents/lab7.json 2019-03-21T11:31:23.436+0000 connected to: localhost 2019-03-21T11:31:23.455+0000 imported 19 documents ===== 2. Show the name and population of all cities where the population is over 10,000. ===== //Query db.cityinfo.find({$and:[{city:{$exists:true}},{pop:{$gt:10000}}]}) //Result { "_id" : "02906", "city" : "PROVIDENCE", "pop" : 31069, "state" : "RI", "capital" : { "name" : "Providence", "electoralCollege" : 4 } } { "_id" : "02907", "city" : "CRANSTON", "pop" : 25668, "state" : "RI", "capital" : { "name" : "Providence", "electoralCollege" : 4 } } { "_id" : "10001", "city" : "NEW YORK", "pop" : 18913, "state" : "NY", "capital" : { "name" : "Albany", "electoralCollege" : 29 } } { "_id" : "01001", "city" : "AGAWAM", "pop" : 15338, "state" : "MA", "capital" : { "name" : "Boston", "electoralCollege" : 11 } } { "_id" : "33125", "city" : "MIAMI", "pop" : 47761, "state" : "FL", "capital" : { "name" : "Tallahassee", "electoralCollege" : 29 } } ===== 3. Show the name and population of each state based on the cities shown. ===== db.cityinfo.find({city:{$exists:true}},{_id:false,state:1, pop:1}) { "pop" : 31069, "state" : "RI" } { "pop" : 177, "state" : "MA" } { "pop" : 2867, "state" : "NY" } { "pop" : 25668, "state" : "RI" } { "pop" : 943, "state" : "NY" } { "pop" : 18913, "state" : "NY" } { "pop" : 958, "state" : "NY" } { "pop" : 15338, "state" : "MA" } { "pop" : 47761, "state" : "FL" } { "pop" : 9275, "state" : "FL" } { "pop" : 7655, "state" : "FL" } { "pop" : 3697, "state" : "MA" } or an aggregated interpretation db.cityinfo.aggregate([{$match:{city:{$exists:true}}},{$group:{_id:"$state", "Total by State":{$sum:"$pop"}}}]) { "_id" : "NY", "Total by State" : 23681 } { "_id" : "FL", "Total by State" : 64691 } { "_id" : "MA", "Total by State" : 19212 } { "_id" : "RI", "Total by State" : 56737 } ===== 4. Show the total population of cities in NY as “Population”. ===== db.cityinfo.aggregate([{$match:{state:"NY"}},{$group:{_id:"$state","Population":{$sum:"$pop"}}}]) { "_id" : "NY", "Population" : 23681 } ===== 5. Show the _id, city and name of the capital city of each state for cities with a population greater than 20,000. ===== db.cityinfo.find({$and:[{city:{$exists:true}},{pop:{$gt:20000}}]},{city:1,"capital.name":1}) { "_id" : "02906", "city" : "PROVIDENCE", "capital" : { "name" : "Providence" } } { "_id" : "02907", "city" : "CRANSTON", "capital" : { "name" : "Providence" } } { "_id" : "33125", "city" : "MIAMI", "capital" : { "name" : "Tallahassee" } } ===== 6. Show all details for “Tom” including full details of his addresses. ===== db.cityinfo.aggregate([{$match:{name:"Tom"}},{$lookup:{from:"cityinfo", localField:"addresses", foreignField: "_id", as:"Details"}}]).pretty() { "_id" : "1", "name" : "Tom", "addresses" : [ "01001", "12997" ], "Details" : [ { "_id" : "01001", "city" : "AGAWAM", "pop" : 15338, "state" : "MA", "capital" : { "name" : "Boston", "electoralCollege" : 11 } }, { "_id" : "12997", "city" : "WILMINGTON", "pop" : 958, "state" : "NY", "capital" : { "name" : "Albany", "electoralCollege" : 29 } } ] } ===== 7. Show all details for “Chesterfield” including full details of the state, but do not show details relating to its capital. ===== **HINT:** Use the $project aggregation pipeline stage. db.cityinfo.aggregate([{$match:{city:"CHESTERFIELD"}},{$lookup:{from:"cityinfo", localField:"state", foreignField:"_id", as:"StateInfo"}},{$project:{capital:0}}]).pretty() { "_id" : "01012", "city" : "CHESTERFIELD", "pop" : 177, "state" : "MA", "StateInfo" : [ { "_id" : "MA", "name" : "Massachusetts", "pop" : 6868000, "state" : 1790 } ] }