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

Difference between revisions of "FIND Tutorial"

From NoSQLZoo
Jump to: navigation, search
Line 81: Line 81:
 
==Using $or==
 
==Using $or==
 
<div class=q data-lang=mongo>
 
<div class=q data-lang=mongo>
<p class=strong>Find the countries that have a population of over 100 million or less than a million</p>
+
<p class=strong>Find the countries that have a population of over 200 million or less than 20,000</p>
 
<pre class=def>
 
<pre class=def>
 
db.world.find({$or:[{name:'Germany'},
 
db.world.find({$or:[{name:'Germany'},
Line 88: Line 88:
 
</pre>
 
</pre>
 
<div class=ans>
 
<div class=ans>
db.world.find({$or:[{population:{$lt:1000000}},
+
db.world.find({$or:[{population:{$gt:200000000}},
                     {population:{$gt:100000000}}]},
+
                     {population:{$lt:20000    }}]},
               {name:1, population:1, _id:0})))
+
               {name:1,population:1,_id:0})
</div>
 
</div>
 
 
 
<div class=q data-lang=mongo>
 
<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>
 
 
 
<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>
 
<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>
 
<div class=ans>
 
pp.pprint(list(db.world.find({"name":{"$in":["China", "Russia", "United States"]}}).sort("population",-1).limit(1)))
 
</div>
 
</div>
 
 
 
<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>
 
 
 
<div class=q data-lang="py3">
 
<p class=strong>Show capital and population for the top 5 capital cities starting with the letter "M" that have a population of less than 3 million  </p>
 
<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>
 
<div class=ans>
 
pp.pprint(list(
 
    db.world.find(
 
      {"$where":"this.name[0]==this.continent[0]"},
 
      {"_id":0, "capital":1})
 
))
 
 
</div>
 
</div>
 
</div>
 
</div>

Revision as of 17:26, 13 November 2015

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.

Show Germany

Use find() to show the details of Germany

Show Germany instead of France

db.world.find({name:'France'})

db.world.find({name:'Germany'})

Eurasia - is that even a thing?

You can use .pretty() to make the output more readable.

List all the countries in the continent of "Eurasia"

db.world.find({name:'Germany'}).pretty()

db.world.find({continent:"Eurasia"}).pretty()

Find an area

You can test numbers as well as strings

Find the country with an area of exactly 43094

db.world.find({gdp:3425956000000}).pretty()

db.world.find({area:43094}).pretty()

Using $gt

You can use $gt and $lt to compare numbers and strings ($gt is greater than, $lt is less than)

Show each country with a population of over 250000000

db.world.find(
    {area:{$gt:9000000}},
    {name:1,_id:0}
).pretty()

db.world.find({population:{$gt:250000000}},{name:1,_id:0}).pretty()

After S

List the countries in Europe that come after "S" in the alphabet


 db.world.find({population:{$gt:80000000},
                continent:"Europe"},
               {name:1, _id:0})

Name and Capital

Find the name and capital cities for countries with a population of over 70 million


db.world.find(

   {population:{$gt:70000000}},
   {name:1,capital:1,_id:0}

).pretty()

Using $or

Find the countries that have a population of over 200 million or less than 20,000

db.world.find({$or:[{name:'Germany'},
                    {name:'France'}]},
              {name:1,population:1,_id:0})

db.world.find({$or:[{population:{$gt:200000000}},

                   {population:{$lt:20000     }}]},
             {name:1,population:1,_id:0})