Skip to main content

Utility methods for MongoDB ORM, built on top of mongoengine.

Project description

Documentation Status https://travis-ci.org/MacHu-GWU/mongoengine_mate-project.svg?branch=master https://codecov.io/gh/MacHu-GWU/mongoengine_mate-project/branch/master/graph/badge.svg https://img.shields.io/pypi/v/mongoengine_mate.svg https://img.shields.io/pypi/l/mongoengine_mate.svg https://img.shields.io/pypi/pyversions/mongoengine_mate.svg https://img.shields.io/badge/STAR_Me_on_GitHub!--None.svg?style=social
https://img.shields.io/badge/Link-Document-blue.svg https://img.shields.io/badge/Link-API-blue.svg https://img.shields.io/badge/Link-Source_Code-blue.svg https://img.shields.io/badge/Link-Install-blue.svg https://img.shields.io/badge/Link-GitHub-blue.svg https://img.shields.io/badge/Link-Submit_Issue-blue.svg https://img.shields.io/badge/Link-Request_Feature-blue.svg https://img.shields.io/badge/Link-Download-blue.svg

Welcome to mongoengine_mate Documentation

mongoengine_mate includes lots more utility method in ORM model Class, makes mongoengine more powerful.

Usage

import mongoengine
from mongoengine_mate import ExtendedDocument

class User(ExtendedDocument):
    id = mongoengine.IntField()
    name = mongoengine.StringField()

First, you got better __repr__() like:

>>> User(id=1, name="Alice")
User(id=1, name="Alice")

# access its collection or database
>>> col_user = User.col()
>>> col_user.find({"_id": 1})
>>> col_db = User.db()

# access its field name in order
>>> User.fields_ordered()
["id", "name"]

# provide dictionary-like api
>>> user = User(id=1, name="Alice")
>>> user.keys()
["id", "name"]

>>> user.values()
[1, "Alice"]

>>> user.items()
[("id", "name"), (1, "Alice")]

>>> user.to_dict()
{"id": 1, "name": "Alice"}

>>> user.to_OrderedDict()
OrderedDict([("id", "name"), (1, "Alice")])

Smart Insert - Skip Primary Key Conflict

When you do batch insert, sometimes one or a few documents may cause _id field conflict error, which is breaking the batch insert operation.

Usually you have to write a for loop` and use ``try ... except ... to ignore conflict. But, it is SLOW!

ExtendedDocument.smart_insert provides a fast and convenient way to batch insert lots of document at once correctly.

# insert one document which breaks the batch insert
User(id=100, name="Obama").save()

# smart_insert, automatically handle NotUniqueError
User.smart_insert([
    User(id=1, name="Alice"),
    User(id=2, name="Bob"),
    ...
    User(id=1000, name="Zillow"),
])

Smart Update - Batch Upsert

When you do batch update, you mostly want to use the _id field to locate which document you want to update.

>>>User(id=2, name="Bob").save()

# update only
>>> User.smart_update([
    User(id=1, name="Alice"),
    User(id=2, name="Bruce"),
    User(id=3, name="Cathy"),
], upsert=False)
>>> User.objects.count()
1

# upsert
>>> User.smart_update([
    User(id=1, name="Alice"),
    User(id=2, name="Bruce"),
    User(id=3, name="Cathy"),
], upsert=True)
>>> User.objects.count()
3

Install

mongoengine_mate is released on PyPI, so all you need is:

$ pip install mongoengine_mate

To upgrade to latest version:

$ pip install --upgrade mongoengine_mate

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mongoengine_mate-0.0.5.tar.gz (15.8 kB view details)

Uploaded Source

Built Distribution

mongoengine_mate-0.0.5-py2.py3-none-any.whl (16.8 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file mongoengine_mate-0.0.5.tar.gz.

File metadata

  • Download URL: mongoengine_mate-0.0.5.tar.gz
  • Upload date:
  • Size: 15.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/2.7.13

File hashes

Hashes for mongoengine_mate-0.0.5.tar.gz
Algorithm Hash digest
SHA256 5547085ce7c32f6bba2d3dd30582c4ab2831ab012dca2e2a41ef06c28092a4f4
MD5 1e2bab9550b8f5705dd2b2f49d451136
BLAKE2b-256 0f9387ef53ee7aa6df1ef9ceb50154b1e35ac734ace25b06dc25945f99799c21

See more details on using hashes here.

File details

Details for the file mongoengine_mate-0.0.5-py2.py3-none-any.whl.

File metadata

  • Download URL: mongoengine_mate-0.0.5-py2.py3-none-any.whl
  • Upload date:
  • Size: 16.8 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/2.7.13

File hashes

Hashes for mongoengine_mate-0.0.5-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 d22176bc9fc8148ef906c4903d586a06de7e0840ffca75377f3054cd0a9fa419
MD5 76e76f4481a2908c08ce164cedfe7305
BLAKE2b-256 b280f0f66e698f5e380c3d2999033c3786a84d7c60a6cde492f68f30b707720a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page