Cookies help us deliver our services. By using our services, you agree to our use of cookies. More information

Difference between revisions of "FIND basics"

From NoSQLZoo
Jump to: navigation, search
 
(24 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
+
<pre class="setup">
<pre class=setup>
 
 
#ENCODING
 
#ENCODING
 
import io
 
import io
Line 16: Line 15:
  
 
==Working with the <code>world</code> collection of countries==
 
==Working with the <code>world</code> collection of countries==
   <p>These examples introduce NoSQL using MonogDB and PyMongo under Python3.4. We will be using the find() command and basic comparison functions on the collection '''world''':</p>
+
   <p>This tutorial introduces NoSQL using MonogDB and PyMongo under Python3.4. We will be using the <code>find()</code> command and comparison functions on the collection '''world''' which contains details of around 250 countries of the world:</p>
For help on this [[FIND_basics#Q3| click here]]
+
[[FIND examples]] are available.
 
<div class='extra_space' style='width:1em; height:6em;'></div>
 
<div class='extra_space' style='width:1em; height:6em;'></div>
 
<div class=q data-lang="py3">
 
<div class=q data-lang="py3">
Line 24: Line 23:
 
<pre class=def>
 
<pre class=def>
 
pp.pprint(
 
pp.pprint(
     db.world.find()
+
     db.world.find()[0]
 
)
 
)
 
</pre>
 
</pre>
Line 33: Line 32:
  
 
<div class=q data-lang="py3">
 
<div class=q data-lang="py3">
Use <code>sort()</code> to find the last document in world
+
<p class=strong>List all the countries in the continent of Asia</p>
<p class=strong>Show the last document of world</p>
 
 
<pre class=def>
 
<pre class=def>
 +
pp.pprint(list(
 +
  db.world.find({},{"capital":1, "_id":0})
 +
))
 
</pre>
 
</pre>
 
<div class=ans>
 
<div class=ans>
pp.pprint(list(db.world.find().sort("$natural", -1).limit(1)))
+
pp.pprint(list(db.world.find({"continent":"Asia"}, {"_id":0, "name":1})))
 
</div>
 
</div>
 
</div>
 
</div>
  
 
<div class=q data-lang="py3">
 
<div class=q data-lang="py3">
<p class=strong>List all the countries in the continent of Asia</p>
+
<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({"continent":"Asia"}, {"_id":0, "name":1})))
+
pp.pprint(list(
 +
  db.world.find({"name":{'$regex':"^S"},
 +
                "continent":"Europe"},{"name":1, "_id":0})
 +
))
 
</div>
 
</div>
 
</div>
 
</div>
  
 
<div class=q data-lang="py3">
 
<div class=q data-lang="py3">
 
 
<p class=strong>Find the capital cities for countries with a population of over 70 million</p>
 
<p class=strong>Find the capital cities for countries with a population of over 70 million</p>
 
<pre class=def>
 
<pre class=def>
 +
</pre>
 +
<div class=ans>
 +
pp.pprint(list(db.world.find({"population":{"$gt":70000000}},{"capital":1,"_id":0})))
 +
</div>
 +
</div>
  
 +
<div class=q data-lang="py3">
 +
<p class=strong>Find the countries that have a population of over 100 million or less than a million</p>
 +
<pre class=def>
 
</pre>
 
</pre>
 
<div class=ans>
 
<div class=ans>
pp.pprint(list(db.world.find({"population":{"$gt":70000000}},{"capital":1,"_id":0})))
+
pp.pprint(list(db.world.find({"$or":[{"population":{"$lt":1000000}},{"population":{"$gt":100000000}}]}, {"name":1, "_id":0})))
 
</div>
 
</div>
 
</div>
 
</div>
  
 
<div class=q data-lang="py3">
 
<div class=q data-lang="py3">
 +
<p class=strong>Find the names of countries beginning with "U" that are outside of Europe and North America</p>
 +
<pre class=def>
 +
</pre>
 +
<div class=ans>
 +
pp.pprint(list(db.world.find({"$and":[{"name":{'$regex':"^U"}},{"continent":{"$nin":["Europe", "North America"]}}]},{"name":1,"_id":0})))
 +
</div>
 +
</div>
  
<p class=strong>Find the countries that have a population of over 100 million or less than a million</p>
+
<div class=q data-lang="py3">
 +
<p class=strong>Find the names of all countries that contain a white space </p>
 
<pre class=def>
 
<pre class=def>
 +
</pre>
 +
<div class=ans>
 +
pp.pprint(list(db.world.find({"name":{"$regex":"^.*\s.*$"}},{"name":1,"_id":0})))
 +
</div>
 +
</div>
  
 +
<div class=q data-lang="py3">
 +
<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>
 
</pre>
 
<div class=ans>
 
<div class=ans>
pp.pprint(list(db.world.find({"$or":[{"population":{"$lt":1000000}},{"population":{"$gt":100000000}}]}, {"name":1, "_id":0})))
+
pp.pprint(list(db.world.find({"name":{"$in":["China", "Russia", "United States"]}}).sort("population",-1).limit(1)))
 
</div>
 
</div>
 
</div>
 
</div>
  
 
<div class=q data-lang="py3">
 
<div class=q data-lang="py3">
 +
Use [[Sort]] to find the last document in world
 +
<p class=strong>Show the last document of world</p>
 +
<pre class=def>
 +
</pre>
 +
<div class=ans>
 +
pp.pprint(list(db.world.find().sort("$natural", -1))[0])
 +
</div>
 +
</div>
  
<p class=strong>Find the names of countries beginning with "U" that are outside of Europe and North America</p>
+
<div class=q data-lang="py3">
 +
<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>
 +
<div class=ans>
 +
pp.pprint(list(db.world.find({"$and":[{"capital":{"$regex":"^M"}},{"population":{"$lt":3000000}}]}, {"_id":0, "capital":1, "population":1}).sort("population",-1).limit(5)))
 +
</div>
 +
</div>
  
 +
<div class=q data-lang="py3">
 +
<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" >
 +
  find({"$where": " boolean expression "})
 +
</div>
 +
<pre class=def>
 
</pre>
 
</pre>
 
<div class=ans>
 
<div class=ans>
pp.pprint(list(db.world.find({"$and":[{"name":{'$regex':"^U"}},{"continent":{"$nin":["Europe", "North America"]}}]},{"name":1,"_id":0})))
+
pp.pprint(list(
 +
    db.world.find(
 +
      {"$where":"this.name[0]==this.continent[0]"},  
 +
      {"_id":0, "capital":1})
 +
))
 
</div>
 
</div>
 
</div>
 
</div>

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})

))