Py Self Mongo
A self mongo client for the [MongoDB][mongo] database is a thin client that connects to a mongo server and provides a simple interface to the database.
A client is written as a singleton to make sure that only one connection is open at a time. The connection timeout is taken care by checking the server info every time a request is made.
A new connection is made if the server info is not available or the connection has timed out. The project is developed using poetry and the [Pytest][pytest] framework.
How to use
- Create a config file with name
.mongo_config.yaml
in the root directory of the project. The config file should contain the following fields:
mongo:
host:
localhost
port:
27017
db_name:
db_name
password:
password
username:
username
The host can be an IP address or a hostname. E.g. In case of a hosted mongo server in aws, the hostname is ec2-*-**-**-**.**-east-2.compute.amazonaws.com
.
The client can be used as follows:
from pyselfmongo import PySelfMongo
mongo_client = PySelfMongo()
mongo_client.get_collection('collection_name')
- If no config file is found, the client will try to connect to the localhost with default port 27017. In this case the client can be intialized as follows:
from pyselfmongo import PySelfMongo
mongo_client = PySelfMongo(db_name='db_name', username='user_name', password='password')
mongo_client.get_collection('collection_name')
Methods and attributes
get_collection(collection_name)
: Returns a collection object.get_document_by_id(collection_name, document_id)
: Returns a document object.get_document_by_query(collection_name, query)
: Returns a list of document objects.get_document_by_query_with_projection(collection_name, query, projection)
: Returns a list of document objects.get_all_document_generatosr(collection_name, filter)
: Returns a generator of all documents in the collection.delete_document(collection_name, document_id)
: Deletes a document.delete_document_by_id(collection_name, document_id)
: Deletes a document.update_document_by_field(collection_name, field, value)
: Updates a document
Installation
Install using pip:
$ pip install pyselfmongo