Difference between revisions of "FIND basics"
(3 intermediate revisions by 2 users not shown) | |||
Line 44: | Line 44: | ||
<div class=q data-lang="py3"> | <div class=q data-lang="py3"> | ||
− | <p class=strong> | + | <p class=strong>List the countries in Europe that start with the letter "S"</p> |
<pre class=def> | <pre class=def> | ||
</pre> | </pre> | ||
<div class=ans> | <div class=ans> | ||
− | + | pp.pprint(list( | |
+ | db.world.find({"name":{'$regex':"^S"}, | ||
+ | "continent":"Europe"},{"name":1, "_id":0}) | ||
+ | )) | ||
</div> | </div> | ||
</div> | </div> | ||
Line 89: | Line 92: | ||
<div class=q data-lang="py3"> | <div class=q data-lang="py3"> | ||
− | <p class=strong>Which country out of China, Russia, and the United States has the largest population</p> | + | <p class=strong>Which country out of China, Russia, and the United States has the largest population.</p> |
+ | You might want to use [[Sort]] and limit to get the answer. | ||
<pre class=def> | <pre class=def> | ||
</pre> | </pre> | ||
Line 108: | Line 112: | ||
<div class=q data-lang="py3"> | <div class=q data-lang="py3"> | ||
− | <p class=strong>Show capital and population for the top 5 | + | <p class=strong>Show capital and population for the top 5 countries (by population) starting with the letter "M" that have a population of less than 3 million </p> |
<pre class=def> | <pre class=def> | ||
</pre> | </pre> | ||
Line 119: | Line 123: | ||
<p class=strong>Show all the capitals for countries that start with the same letter as their continent</p> | <p class=strong>Show all the capitals for countries that start with the same letter as their continent</p> | ||
<div class=hint title="Using $where with find" > | <div class=hint title="Using $where with find" > | ||
− | find({"$where": " boolean | + | find({"$where": " boolean expression "}) |
</div> | </div> | ||
<pre class=def> | <pre class=def> |
Latest revision as of 15:24, 12 November 2015
#ENCODING import io import sys sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-16') #MONGO from pymongo import MongoClient client = MongoClient() client.progzoo.authenticate('scott','tiger') db = client['progzoo'] #PRETTY import pprint pp = pprint.PrettyPrinter(indent=4)
Working with the world
collection of countries
This tutorial introduces NoSQL using MonogDB and PyMongo under Python3.4. We will be using the find()
command and comparison functions on the collection world which contains details of around 250 countries of the world:
FIND examples are available.
Use find()
to return the 21st document in world
Show the 21st document in world
pp.pprint( db.world.find()[0] )
pp.pprint(db.world.find()[20])
List all the countries in the continent of Asia
pp.pprint(list( db.world.find({},{"capital":1, "_id":0}) ))
pp.pprint(list(db.world.find({"continent":"Asia"}, {"_id":0, "name":1})))
List the countries in Europe that start with the letter "S"
pp.pprint(list(
db.world.find({"name":{'$regex':"^S"}, "continent":"Europe"},{"name":1, "_id":0})
))
Find the capital cities for countries with a population of over 70 million
pp.pprint(list(db.world.find({"population":{"$gt":70000000}},{"capital":1,"_id":0})))
Find the countries that have a population of over 100 million or less than a million
pp.pprint(list(db.world.find({"$or":[{"population":{"$lt":1000000}},{"population":{"$gt":100000000}}]}, {"name":1, "_id":0})))
Find the names of countries beginning with "U" that are outside of Europe and North America
pp.pprint(list(db.world.find({"$and":[{"name":{'$regex':"^U"}},{"continent":{"$nin":["Europe", "North America"]}}]},{"name":1,"_id":0})))
Find the names of all countries that contain a white space
pp.pprint(list(db.world.find({"name":{"$regex":"^.*\s.*$"}},{"name":1,"_id":0})))
Which country out of China, Russia, and the United States has the largest population.
You might want to use Sort and limit to get the answer.
pp.pprint(list(db.world.find({"name":{"$in":["China", "Russia", "United States"]}}).sort("population",-1).limit(1)))
Use Sort to find the last document in world
Show the last document of world
pp.pprint(list(db.world.find().sort("$natural", -1))[0])
Show capital and population for the top 5 countries (by population) starting with the letter "M" that have a population of less than 3 million
pp.pprint(list(db.world.find({"$and":[{"capital":{"$regex":"^M"}},{"population":{"$lt":3000000}}]}, {"_id":0, "capital":1, "population":1}).sort("population",-1).limit(5)))
Show all the capitals for countries that start with the same letter as their continent
find({"$where": " boolean expression "})
pp.pprint(list(
db.world.find( {"$where":"this.name[0]==this.continent[0]"}, {"_id":0, "capital":1})
))