Skip to main content

MongoDB client for CPython and MicroPython.

It has mongo shell like APIs.

Support platform

Support database

  • MongoDB 3.2, 3.4, 3.6

  • Azure CosmosDB (MongoDB API)

Install

CPython

$ python3 -m pip install nmongo

MicroPython

$ micropython -m upip install micropython-errno \
    micropython-os \
    micropython-socket \
    micropython-time \
    micropython-datetime \
    micropython-binascii \
    micropython-random \
    micropython-struct \
    micropython-base64 \
    micropython-unittest

$ micropython -m upip install nmongo

if you use MicroPython patch datetime.py

Example

Connect to Database

>>> import nmongo
>>> db = nmongo.connect('servername', 'somewhatdatabase')
>>>

SSL connection

>>> import nmongo
>>> db = nmongo.connect('servername', 'somewhatdatabase', use_ssl=True)
>>>

or

>>> import nmongo
>>> db = nmongo.connect('servername', 'somewhatdatabase', use_ssl=True, ssl_ca_certs='/path/to/something-cert.crt)
>>>

User Authentication

>>> import nmongo
>>> db = nmongo.connect('servername', 'somewhatdatabase', user='user', password='password')
>>>

Connect to Azure CosmosDB (MongoDB API)

>>> import nmongo
>>> db = nmongo.connect('xxx.mongo.cosmos.azure.com', 'somewhatdatabase', user='xxx', password='password', port=10255, use_ssl=True)
>>>

Create

>>> db.fruits.insert({'name': 'apple', 'price': 200})
1
>>> db.fruits.insert([{'name': 'orange', 'price': 100}, {'name': 'banana', 'price': 50}])
2
>>> db.fruits.count()
3
>>>

Read

>>> cur = db.fruits.find({'name': 'banana'})
>>> cur.fetchone()
{'price': 50, '_id': ObjectId("5826b2313d28909ce9f6ea63"), 'name': 'banana'}
>>> cur = db.fruits.find()
>>> cur.fetchall()
[{'price': 200, '_id': ObjectId("5826b2273d28909ce9f6ea61"), 'name': 'apple'}, {'price': 100, '_id': ObjectId("5826b2313d28909ce9f6ea62"), 'name': 'orange'}, {'price': 50, '_id': ObjectId("5826b2313d28909ce9f6ea63"), 'name': 'banana'}]
>>>

Update

>>> db.fruits.update({'name': 'banana'}, {'$inc': {'price': 20}})
{'nModified': 1, 'ok': 1, 'n': 1}
>>> cur = db.fruits.find({'name': 'banana'})
>>> cur.fetchone()
{'_id': ObjectId("5823dd6d3d28909ce9f6e99c"), 'name': 'banana', 'price': 70}
>>>

Delete

>>> db.fruits.remove({'name': 'banana'})
1
>>> db.fruits.count()
2

Count each collection records

>>> for collection in db.getCollections():
...     print(collection.name, collection.count())
...
fruits 3
>>> db.getCollection('fruits').count()
3
>>>

See also mongo Shell Methods (Collection and Database sections).

Features Not Implemented

All platform

  • GridFS

MicroPython

  • ssl (so that can’t connect to Azure CosmosDB)

  • datetime.datetime

  • time.struct_time

Download files

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

Source Distribution

nmongo-0.4.3.tar.gz (13.2 kB view details)

Uploaded Source

File details

Details for the file nmongo-0.4.3.tar.gz.

File metadata

  • Download URL: nmongo-0.4.3.tar.gz
  • Upload date:
  • Size: 13.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.8.5

File hashes

Hashes for nmongo-0.4.3.tar.gz
Algorithm Hash digest
SHA256 30fcbf99e612e6ea874607baa5458b12ce84bedddbe38b23ba20b9787046da5b
MD5 d4a1ab9f5a6ebf12a2e7acb9065eba7e
BLAKE2b-256 62993cffc57faadd0e79fa7f6037036b18e7506cfa9507c1ecfa91903e6ebe78

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page