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.
- Data Persistence – Python – PyMongo
- Python Data Persistence – MongoDB – Update Document
- Python Data Persistence – ORM – Querying
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 }