Skip to main content

JsonDocStore

Simple JSON document storage on disk.

  • A Python library to organize and query JSON documents on disk, basically, with no running process.
  • You instantiate a JsonDocStore object with a root directory where your JSON documents will be stored. If you want to organize documents into different folders, use one JsonDocStore instance per folder. Each instance manages only the JSON files in its own directory. E.g. JsonDocStore("./data/users") and JsonDocStore("./data/products").
  • Each document is stored as a file named <key>.json. The document key is the filename stem.
  • If you want to query by a field, create an index on it. This will create an index.json file in the store directory. Currently, only exact match is supported. It is not required for basic operations like insert, update, delete, and get. The index is in-memory, not persisted to disk and is rebuilt when the store is opened.

Installation

pip install jsondocstore

API docs are available at:

https://mortensi.github.io/jsondocstore/

Using from the terminal

Start the interactive shell:

jsondocstore /path/to/store

The directory must already exist. The CLI does not create it for you.

Commands:

  • list prints document filenames only
  • listindexes prints indexed fields, or [] if there is no index.json
  • get KEY
  • queryby FIELD VALUE
  • createindex FIELD
  • deleteindex FIELD
  • insert KEY JSON_DOCUMENT valid keys may contain letters, digits, ., _, and -. No whitespace.
  • update KEY JSON_DOCUMENT
  • delete KEY
  • exit

Example session:

$ jsondocstore ./data
jsondocstore> insert user-1 '{"username": "alice", "password": "secret1", "role": "admin"}'
jsondocstore> insert user-2 '{"username": "bob", "password": "secret2", "role": "user"}'
jsondocstore> insert user-3 '{"username": "carol", "password": "secret3", "role": "user"}'
jsondocstore> update user-2 '{"username": "bob", "password": "secret2", "role": "admin"}'
jsondocstore> list
[
  "user-1.json",
  "user-2.json",
  "user-3.json"
]
jsondocstore> get user-1
{
  "password": "secret1",
  "role": "admin",
  "username": "alice"
}
jsondocstore> createindex role
jsondocstore> queryby role user
{
  "user-3": {
    "password": "secret3",
    "role": "user",
    "username": "carol"
  }
}

Using from your Python application

Learn the API by reading the API reference.

Example:

from jsondocstore import JsonDocStore

store = JsonDocStore("./data", create=True)
store.insert("user-1", {"username": "alice", "password": "secret1", "role": "admin"})
store.insert("user-2", {"username": "bob", "password": "secret2", "role": "user"})
store.insert("user-3", {"username": "carol", "password": "secret3", "role": "user"})
store.update("user-2", {"username": "bob", "password": "secret2", "role": "admin"})
names = store.list_all()
store.create_index("role")
admins = store.query_by("role", "admin")
doc = store.get("user-1")

Schema

The schema file index.json is optional and required only if you want to use indexes.

  • index_fields defines which fields are indexed in memory.
  • get(), insert(), delete(), and list_all() work without index.json.
  • query_by() only works when an index exists. It returns a mapping of key -> document. Querying without an index, or on a non-indexed field, raises an error.
  • Indexes work only on top-level document fields, not nested paths.

Example:

{
  "index_fields": ["email", "status"]
}

For example, this works:

{
  "email": "alice@example.com",
  "profile": {
    "city": "Rome"
  }
}
  • you can index email
  • you cannot index profile.city

Metadata

Release files for jsondocstore 0.2.1

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

Source distribution (sdist)

Source distribution for jsondocstore 0.2.1
File Size Uploaded
jsondocstore-0.2.1.tar.gz 8.7 kB Details

Built distribution (wheel)

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

Total release size: 16.8 kB

Release files / jsondocstore-0.2.1.tar.gz

Download URL jsondocstore-0.2.1.tar.gz
Size 8.7 kB
Tags Source
SHA-256 checksum
How to use checksums
ae137d3d6bdeaa03ac52a2af4cc4c7032686165863d09bca39a47909fb0792b4
BLAKE2b-256 checksum
How to use checksums
725cd2b473a8a4bf3ad4a0e1f1f277331aa06013a3c1094def91600b660207cb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 10, 2026.

Transparency log

Release files / jsondocstore-0.2.1-py3-none-any.whl

Download URL jsondocstore-0.2.1-py3-none-any.whl
Size 8.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7b6bcaccf5a9a242ed4c8a30af5835328e3f2828f345c6df0709884e6494c1b4
BLAKE2b-256 checksum
How to use checksums
e103490046105aa6336207d02e0d23e583609b4a21ce6e50b46c029da9abcc9d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 10, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

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