Skip to main content

mongodol

Access MongoDB through a Mapping (dict-like) interface.

mongodol wraps pymongo collections as Mapping/MutableMapping objects (readers and persisters), so you can read and write mongo data with normal dict-like syntax, and compose your own key/value transforms with dol wrappers instead of writing backend-specific boilerplate.

To install:

pip install mongodol

And of course, you need a running MongoDB -- see the installation instructions.

For AI agents

mongodol publishes its documentation in forms made for coding agents. If you are one, start here.

The documentation, machine-readable: llms.txt indexes every page; mongodol.md is the whole documentation in one file; every page has a .md twin; objects.inv maps symbols to URLs.

If you are a control freak, the rest of this README is written for you, starting at Quick start.

Quick start

from mongodol import MongoCollectionPersister, mk_dflt_mgc

# mk_dflt_mgc() gives you a pymongo collection to play with (mongodol/mongodol_test by default)
mgc = mk_dflt_mgc()
mgc.delete_many(
    {}
)  # start from an empty collection (skip this to keep what's already there)
s = MongoCollectionPersister(mgc, getitem_projection={"_id": False})

len(s)
# 0

k = {"_id": "my_id"}
s[k] = {"mongo": "uses", "json": "data"}
list(s)
# [{'_id': 'my_id'}]

Since the base reader is a thin, low-level wrapper, s[k] returns a pymongo.cursor.Cursor (a key may match zero, one, or many docs), so you fetch the value(s) explicitly:

next(s[k])
# {'mongo': 'uses', 'json': 'data'}

del s[k]
len(s)
# 0

Beyond the base classes

The base MongoCollectionReader/MongoCollectionPersister classes always return cursors and never validate uniqueness. For the common case of "one key maps to one doc", use one of the *UniqueDoc*/*FirstDoc* reader and persister classes instead:

from mongodol import MongoCollectionUniqueDocReader

MongoCollectionUniqueDocReader gives you s[k] as a plain dict (not a cursor), and raises KeyNotUniqueError if more than one doc matches k. See its docstring for a runnable example.

For custom key/value shapes, business logic, or connecting mongodol stores to the rest of the dol ecosystem (caching, serialization, key transforms, etc.), wrap a mongodol store with dol.wrap_kvs like you would any other dol store.

More

See the package documentation and the flat mongodol.md aggregate for the full API.

Release files for mongodol 0.1.8

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

Source distribution (sdist)

Source distribution for mongodol 0.1.8
File Size Uploaded
mongodol-0.1.8.tar.gz 59.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mongodol 0.1.8
File Interpreter ABI Platform
mongodol-0.1.8-py3-none-any.whl Python 3 none any Details

Total release size: 124.9 kB

Release files / mongodol-0.1.8.tar.gz

Download URL mongodol-0.1.8.tar.gz
Size 59.0 kB
Tags Source
SHA-256 checksum
How to use checksums
81730811f6c8de709d39f9565736075eb2eded2de0266f5a4df76d16b942a79b
BLAKE2b-256 checksum
How to use checksums
37a336577ced0181e6f6bace684c0008657dd82e432ccca17a5afa10f72ebc0a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / mongodol-0.1.8-py3-none-any.whl

Download URL mongodol-0.1.8-py3-none-any.whl
Size 65.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5a8f52a5d2f2e8e9f1ce520497186d1eb681929d139bf6780895e263e261795e
BLAKE2b-256 checksum
How to use checksums
8e8600c9d7dd743e36c79a593a6c0fdd7577ab5f7c00fb37977793220678c1fd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.1.8 This release

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

1 release file

0.1.1

1 release file

0.1.0

1 release file

0.0.26

1 release file

0.0.25

1 release file

0.0.24

1 release file

0.0.23

1 release file

0.0.22

1 release file

0.0.21

1 release file

0.0.20

1 release file

0.0.19

1 release file

0.0.18

1 release file

0.0.17

1 release file

0.0.16

1 release file

0.0.15

1 release file

0.0.14

1 release file

0.0.13

1 release file

0.0.12

1 release file

0.0.11

1 release file

0.0.10

1 release file

0.0.9

1 release file

0.0.8

1 release file

0.0.7

1 release file

0.0.6

1 release file

0.0.5

1 release file

0.0.4

1 release file

0.0.3

2 release files

0.0.2

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