GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - MongoEngine/mongoengine: A Python Object-Document-Mapper for working with MongoDB

BranchesTags
Open more actions menu

Latest commit

 

History

4,462 Commits
4,462 Commits

Folders and files

NameName
Last commit message
Last commit date
.github/workflows
.github/workflows
 
 
benchmarks
benchmarks
 
 
docs
docs
 
 
mongoengine
mongoengine
 
 
tests
tests
 
 
.gitignore
.gitignore
 
 
.pre-commit-config.yaml
.pre-commit-config.yaml
 
 
.readthedocs.yml
.readthedocs.yml
 
 
AUTHORS
AUTHORS
 
 
CONTRIBUTING.rst
CONTRIBUTING.rst
 
 
Dockerfile
Dockerfile
 
 
LICENSE
LICENSE
 
 
MANIFEST.in
MANIFEST.in
 
 
README.rst
README.rst
 
 
docker-compose.yml
docker-compose.yml
 
 
entrypoint.sh
entrypoint.sh
 
 
requirements-dev.txt
requirements-dev.txt
 
 
setup.cfg
setup.cfg
 
 
setup.py
setup.py
 
 
tox.ini
tox.ini
 
 

Repository files navigation

MongoEngine

Info:MongoEngine is an ORM-like layer on top of PyMongo.
Repository:https://github.com/MongoEngine/mongoengine
Author: Harry Marr (https://github.com/hmarr)
Maintainer:Bastien Gerard (https://github.com/bagerard)
https://github.com/MongoEngine/mongoengine/actions/workflows/github-actions.yml/badge.svg?branch=master https://coveralls.io/repos/github/MongoEngine/mongoengine/badge.svg?branch=master https://pepy.tech/badge/mongoengine/month https://readthedocs.org/projects/mongoengine-odm/badge/?version=latest

⚠️ Warning: mongoengine.org is no longer controlled by the MongoEngine project and appears to be an expired domain takeover. The official MongoEngine project is maintained on GitHub and documented on Read the Docs.

About

MongoEngine is a Python Object-Document Mapper for working with MongoDB. Documentation is available at https://mongoengine-odm.readthedocs.io - there is currently a tutorial, a user guide, and an API reference.

Supported MongoDB Versions

MongoEngine is currently tested against MongoDB v4.4, v5.0, v6.0, v7.0 and v8.0. Future versions should be supported as well, but aren't actively tested at the moment. Make sure to open an issue or submit a pull request if you experience any problems with more recent MongoDB versions.

Installation

MongoEngine requires Python 3.10 or newer. Install it from PyPI with:

$ python -m pip install -U mongoengine

To install a source checkout, run python -m pip install . from the repository root.

Dependencies

MongoEngine requires:

  • PyMongo >=4.0

The following optional packages enable additional functionality:

If you utilize a DateTimeField, you might also use a more flexible date parser:

  • python-dateutil >=2.1.0

If you need to use an ImageField or ImageGridFsProxy:

  • Pillow>=7.0.0

If you need to use signals:

  • blinker>=1.3

Examples

Some simple examples of what MongoEngine code looks like:

import datetime
from mongoengine import *

connect('mydb')

class BlogPost(Document):
    title = StringField(required=True, max_length=200)
    posted = DateTimeField(default=lambda: datetime.datetime.now(datetime.timezone.utc))
    tags = ListField(StringField(max_length=50))
    meta = {'allow_inheritance': True}

class TextPost(BlogPost):
    content = StringField(required=True)

class LinkPost(BlogPost):
    url = StringField(required=True)

# Create a text-based post
>>> post1 = TextPost(title='Using MongoEngine', content='See the tutorial')
>>> post1.tags = ['mongodb', 'mongoengine']
>>> post1.save()

# Create a link-based post
>>> post2 = LinkPost(title='Example Docs', url='https://example.com/')
>>> post2.tags = ['mongoengine', 'documentation']
>>> post2.save()

# Iterate over all posts using the BlogPost superclass
>>> for post in BlogPost.objects:
...     print('===', post.title, '===')
...     if isinstance(post, TextPost):
...         print(post.content)
...     elif isinstance(post, LinkPost):
...         print('Link:', post.url)
...

# Count all blog posts and their subtypes
>>> BlogPost.objects.count()
2
>>> TextPost.objects.count()
1
>>> LinkPost.objects.count()
1

# Count tagged posts
>>> BlogPost.objects(tags='mongoengine').count()
2
>>> BlogPost.objects(tags='mongodb').count()
1

Tests

To run the test suite, ensure MongoDB is running on the standard port, then install the package with its test dependencies and run pytest:

$ python -m pip install -e ".[test]"
$ pytest tests/

To run the test suite on every supported Python and PyMongo version, you can use tox. You'll need to make sure you have each supported Python version installed in your environment and then:

# Install tox
$ python -m pip install tox
# Run the test suites
$ tox

Community

  • Ask usage questions on Stack Overflow.
  • Report confirmed bugs on GitHub Issues.

Contributing

We welcome contributions! See the Contribution guidelines

About

A Python Object-Document-Mapper for working with MongoDB

mongoengine-odm.readthedocs.io

Topics

hacktoberfestmongomongodbmongodb-ormodmormpymongopython

Resources

Readme
MIT license

Contributing

Contributing
Activity
Custom properties

Stars

4.3k stars

Watchers

131 watching

Forks

1.2k forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.