Skip to main content
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

Metadata

Release files for mongoengine-mate 0.0.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mongoengine-mate 0.0.5
File Size Uploaded
mongoengine_mate-0.0.5.tar.gz 15.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mongoengine-mate 0.0.5
File Interpreter ABI Platform
mongoengine_mate-0.0.5-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 32.6 kB

Release files / mongoengine_mate-0.0.5.tar.gz

Download URL mongoengine_mate-0.0.5.tar.gz
Size 15.8 kB
Tags Source
SHA-256 checksum
How to use checksums
5547085ce7c32f6bba2d3dd30582c4ab2831ab012dca2e2a41ef06c28092a4f4
BLAKE2b-256 checksum
How to use checksums
0f9387ef53ee7aa6df1ef9ceb50154b1e35ac734ace25b06dc25945f99799c21
Upload date
Uploaded using Trusted Publishing?
What is 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

Release files / mongoengine_mate-0.0.5-py2.py3-none-any.whl

Download URL mongoengine_mate-0.0.5-py2.py3-none-any.whl
Size 16.8 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
d22176bc9fc8148ef906c4903d586a06de7e0840ffca75377f3054cd0a9fa419
BLAKE2b-256 checksum
How to use checksums
b280f0f66e698f5e380c3d2999033c3786a84d7c60a6cde492f68f30b707720a
Upload date
Uploaded using Trusted Publishing?
What is 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

Release history Release notifications | RSS feed

This release

0.0.5 This release

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page