Welcome to Microngo’s documentation!

A Quick Microngo Introduction

Microngo is small, fast, and lightweight MongoDB toolkit for python.

Install

Install Microngo using PIP:

pip install Microngo

or install from source:

python setup.py install

Example

Microngo example:

from microngo import Microngo
from datetime import datetime
from random import randrange

#
# Client
#

db = Microngo('localhost', 27017, db="microngo_test")

#
# Insert data
#

contact         = db.insert("Contact")
contact.Name    = "Suryadi"
contact.Gender  = "male"
contact.Created = datetime.utcnow()
contact.Status  = 1
contact.Phone   = {
        "Home": "(233) 233176",
        "Cell": "+62122312"
}
contact_id = contact.save()

# Print info
print("Contact ID:", contact_id)

# Insert many
calls = db.insert("Calls")
for i in range(0, 10):
        calls.No        = i
        calls.Phone     = randrange(1000, 9999)

        # Add
        calls.add()

# Save
calls.save()

#
# Read data
#

contact_data = db.query("Contact").find().sort('Name', 1).first()
if contact_data:
        print("Name:", contact_data.Name)
        print("Gender:", contact_data.Gender)

calls_data = db.query("Calls").find().all()
for item in calls_data:
        print("No:", item.No)
        print("Phone:", item.Phone)

#
# Update data
#

suryadi_data = db.query("Contact").find_by(Name="Suryadi").first()
if suryadi_data:
        suryadi_data.Name = "Em Suryadi"
        suryadi_data.save()
        print("Update ID", suryadi_data._id)

#
# Paginate
#

paginated_data = db.query("Calls").find().paginate(1, per_page=2)
# Info
print("Total Pages:", paginated_data.pages)
print("Current page:", paginated_data.page)
print("Has next page:", paginated_data.has_next())
print("Next page:", paginated_data.next_num)
print("Has prev page:", paginated_data.has_prev())
print("Prev page:", paginated_data.prev_num)
# Item
for call in paginated_data.items:
        print("Call No", call.No)

#
# Delete data
#

calls_data = db.query("Calls").find().limit(5).sort('No', 1).all()
for call in calls_data:
        print("Call No", call.No)
        call.remove()

API

class microngo.Microngo(*args, **kwargs)[source]
Parameters:db (str or None) – Database name. This param is optional, you can use database() to set current database.
database(database)[source]

Set current database

Parameters:database (str) – Database name
Returns:Microngo
query(collection)[source]

Create query object

Parameters:collection (str) – Collection name
Returns:Query
insert(collection)[source]

Insert into collection

Parameters:collection (str) – Collection name
Returns:Document
class microngo.Query(collection, cursor=None)[source]
Parameters:
  • collection (obj) – PyMongo collection object
  • cursor (obj or None) – PyMongo cursor object
find_by(**kwargs)[source]
Returns:Query
raw()[source]

Get raw result.

Returns:raw result from PyMongo
one()[source]

Get single document.

Returns:Document or None
Raises:Exception – if the result type isn’t dict
first()[source]

Get first document from list or from single document result.

Returns:Document or None
Raises:Exception – if the result type isn’t dict and not iterable
all()[source]

Get all document in list.

Returns:list of Document or []
Raises:Exception – if the result is not iterable
paginate(page, per_page=20)[source]

Crate pagination query

Returns:Pagination or None
class microngo.Document(collection, data=None)[source]
Parameters:
  • collection (obj) – PyMongo collection object
  • data (dict or None) – Data for document
add()[source]

Add document to list, then insert to collection with insert_many function.

raw()[source]

Get raw data or dict from document.

Returns:dict
save()[source]

Save document to collection.

Returns:list of OjectId or single ObjectId
remove()[source]

Remove document from collection.

class microngo.Pagination(query, page, per_page, total, items)[source]
pages

The total number of pages

next_num

The next page number.

has_next()[source]

Returns True if a next page exists.

prev_num

The previous page number.

has_prev()[source]

Returns True if a previous page exists.

Indices and tables