Python Data Persistence – MongoDB – Querying Collection
Retrieving data from the database is always an important operation. MongoDB’s collection has found ( ) method with which documents are fetched. Without any argument, the find ( ) method returns a result set of all documents in a collection. In effect, it is equivalent to ‘SELECT * FROM <table>‘ in SQL.
> db . products . find ()
{ "_id" : Objectld("5c8d420c7bebaca49b767db3"),
"ProductID" : 1, "Name" : "Laptop", "price" : 25000
}
{ "_id" : Objectld("5c8d420c7bebaca49b767db4"),
"ProductID" : 2, "Name" : "TV", "price" : 40000 }
{ "_id" : Objectld("5c8d420c7bebaca49b767db5"),
"ProductID" : 3, "Name" : "Router", "price" : 2000 }
{ "__id" : Objectld("5c8d420c7bebaca49b767db6"),
"ProductID" : 4, "Name" : "Scanner", "price" : 5000 }
{ "_id" : Objectld("5c8d420c7bebaca49b767db7"),
"ProductID" : 5, "Name" : "Printer", "price" : 9000
}Note that, ‘_id’ key is automatically added to each document. The value of each _id is of ObjectId type and is unique for each document.
Invariably, you would want to apply to the result set returned by find ( ). It is done by putting the key-value pair in its parenthesis. In its generalized form, the conditional query is written as follows:
Example
db. collection .find ({ "key" : "value"})The following statement retrieves a document whose ‘Name’ key has ‘TV’ value.
Example
> db .products .find ({"Name": "TV"})
{ "_id" : Objectld("5c8d420c7bebaca4 9b76 7db4"),
"ProductID" : 2, "Name" : "TV", "price" : 40000 }MongoDB doesn’t use traditional logical operator symbols. Instead, it has its own operators, as listed below:
The operators are used in the find ( ) method to apply the filter. The following statement returns products with a price> 10000.
> db.products .find ({"price" : {$gt: 10000 }})
{
"_id" : Objectld("5c8d420c7bebaca49b767db3"),
"ProductID" : 1, "Name" : "Laptop", "price" : 25000
}
{ "_id" : Objectld("5c8d420c7bebaca49b767db4"),
"ProductID" : 2, "Name" : "TV", "price" : 40000
}The Sand, as well as Sor operators, are available for compound logical expressions. Their usage is, as follows:
Example
db. collection.find ($and: [ {"keyl" :"value 1"},
{"key2":"value2"} ] )Use the following command to fetch products with prices between 1000 and 10000.
> db . products . find ( { $and: [ { "price" : { $gt: 1000 } } , {"price":{$lt:10000}} ] })
{ "_id" : Objectld("5c8d420c7bebaca49b767db5 " ) ,
"ProductID" : 3, "Name" : "Router", "price" : 2000
}
{ "_id" : Objectld("5c8d420c7bebaca49b767db6"),
"ProductID" : 4, "Name" : "Scanner", "price" : 5000
}
{ "_id" : Obj ectld("5c8d42 0c7bebaca4 9b767db7") ,
"ProductID" : 5, "Name" : "Printer", "price" : 9000
}