MongoDB is NoSQL Document-oriented database. In MongoDB, the data are stored in a JSON-like document structure instead of storing data in columns and rows manner. MongoDB is flexible for storing semi-structured and unstructured data. MongoDB is used for high-volume data storage and can scale horizontally.
Please import Objectid from pymongo
from pymongo import ObjectId
ObjectId: ObjectId class is a 12-byte binary BSON type, in which 4 bytes of the timestamp of creation, 5 bytes of a random value, and 3 bytes of incrementing counter. ObjectId is the default primary key for MongoDB documents and is usually found in “_id” field.
eg : { "_id" : ObjectId("54759eb3c090d83494e2d804") }
PyMongo: PyMongo is a native Python driver for MongoDB. It allows interaction with MongoDB Database through Python.
Step 1: Make sure to start the MongoDB database locally on the default port (27017). Connecting to MongoDB, accessing the database, and collecting objects.
Python3
# importing MongoClient from pymongo from pymongo import MongoClient # importing ObjectId from bson library from bson.objectid import ObjectId # Establishing connection with # mongodb on localhost client = MongoClient( '127.0.0.1' , 27017 ) # Access database object db = client[ 'database' ] # Access collection object collection = db[ 'collection' ] |
Step 2: Querying MongoDB with find_one().
Syntax:
find_one(filter=None, *args, **kwargs) filter(optional): query filter that selects which documents should be included in the result set. *args (optional): any additional positional arguments *kwargs (optional): any additional keyword arguments
Example 1: In this example, we have already stored the ObjectId object instance, then use the stored object instance to search for the document.
Python3
# inserts data into collection and # returns an object of type objectId objInstance = collection.insert_one({ "name" : "sam" , "age" : 20 }).inserted_id # search MongoDB with # an object of type objectId collection.find_one(objInstance) |
Output:
Example 2: In this example, we have the hex string not an object of ObjectId. We import ObjectId from the bson library to search the document.
Python3
# use the string object id # and objectId object to # create object of type ObjectId id = "5fec2c0b348df9f22156cc07" objInstance = ObjectId( id ) collection.find_one({ "_id" : objInstance}) # below line works same as the above collection.find_one({ "_id" : ObjectId( id )}) collection.find_one(ObjectId( id )) |
Output:
Example 3: In this example, we advance the search by specifying projections that is which field we want to include/exclude in the result set. The below projection will return the entire document without the “_id” field.
Python3
# search document with filter # first parameter is search query # second parameter is filter query # you can as many fields you want # you can specify either 1 or 0 # in filter fields # if you specify 0 the field will # be eliminated form the result query = { "_id" : ObjectId( id )} filter = { "_id" : 0 } collection.find_one(query, filter ) |
Output: