{"id":41516,"library":"miningo","title":"Miningo","description":"Miningo is a tiny, embeddable, document-oriented database written in TypeScript, designed for playgrounds, experimental projects, or simple applications where a full database like MongoDB or PostgreSQL is overkill. Current stable version is 1.1.0, released in 2018. It supports in-memory, persistent JSON file, fast persistent storage, and browser localStorage adapters. It provides a MongoDB-like collection API with CRUD operations and basic querying (no operators). Key differentiator: simple setup, zero configuration, lightweight (single dependency), and TypeScript-first with JSON Schema validation support.","status":"active","version":"1.1.0","language":"javascript","source_language":"en","source_url":"https://github.com/RyosukeCla/miningo","tags":["javascript","database","embedding","nodejs","browser","typescript","jsonschema"],"install":[{"cmd":"npm install miningo","lang":"bash","label":"npm"},{"cmd":"yarn add miningo","lang":"bash","label":"yarn"},{"cmd":"pnpm add miningo","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"used for generating unique document IDs (_id)","package":"uuid","optional":false}],"imports":[{"note":"CommonJS users must use .default, e.g., require('miningo').default","wrong":"const miningo = require('miningo')","symbol":"default","correct":"import miningo from 'miningo'"},{"note":"Adapters are exported as default exports from subpaths","wrong":"require('miningo').InMemoryAdapter","symbol":"InMemoryAdapter","correct":"import InMemoryAdapter from 'miningo/adapters/InMemoryAdapter'"},{"note":"CommonJS: require('miningo/adapters/JsonStorageAdapter').default","wrong":"require('miningo/adapters/JsonStorageAdapter')","symbol":"JsonStorageAdapter","correct":"import JsonStorageAdapter from 'miningo/adapters/JsonStorageAdapter'"},{"note":"Available since v1.0.0","wrong":null,"symbol":"FastStorageAdapter","correct":"import FastStorageAdapter from 'miningo/adapters/FastStorageAdapter'"},{"note":"Browser-only adapter","wrong":null,"symbol":"LocalStorageAdapter","correct":"import LocalStorageAdapter from 'miningo/adapters/LocalStorageAdapter'"}],"quickstart":{"code":"import miningo from 'miningo';\nimport InMemoryAdapter from 'miningo/adapters/InMemoryAdapter';\n\nconst db = miningo(new InMemoryAdapter());\n\ninterface Human {\n  name: string;\n}\n\nasync function main() {\n  const Human = db.collection<Human>('Human');\n  const doc = await Human.insert({ name: 'Alice' });\n  console.log('Inserted:', doc);\n  const found = await Human.find(doc._id);\n  console.log('Found:', found);\n  const all = await Human.findAll();\n  console.log('All:', all);\n  await Human.drop();\n  console.log('Dropped collection');\n}\n\nmain().catch(console.error);","lang":"typescript","description":"Demonstrates creating an in-memory database, inserting a document, finding by ID, listing all, and dropping a collection."},"warnings":[{"fix":"Use `const miningo = require('miningo').default`","message":"CommonJS require() imports must use .default","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Use only simple equality checks: { field: value }","message":"findBy() does not support query operators like $or, $in, etc.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Call miningo() without arguments for in-memory mode","message":"InMemoryAdapter may be deprecated in future versions in favor of default (no adapter)","severity":"deprecated","affected_versions":"1.0.0 - 1.1.0"},{"fix":"Use FastStorageAdapter for better write performance","message":"JSON storage adapter uses synchronous fs.writeFileSync under the hood, blocking event loop on writes","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"search_vec":"'1.1.0':36 '2018':39 'adapt':54 'api':62 'applic':21 'basic':67 'browser':52,93 'collect':61 'configur':76 'crud':64 'current':32 'databas':10,25,90 'depend':79 'design':14 'differenti':72 'document':8 'document-ori':7 'embed':91 'embedd':6 'experiment':17 'fast':48 'file':47 'first':83 'full':24 'in-memori':42 'javascript':89 'json':46,85 'jsonschema':95 'key':71 'lightweight':77 'like':26,60 'localstorag':53 'memori':44 'miningo':1,2 'mongodb':27,59 'mongodb-lik':58 'nodej':92 'oper':65,70 'orient':9 'overkil':31 'persist':45,49 'playground':16 'postgresql':29 'project':18 'provid':56 'queri':68 'releas':37 'schema':86 'setup':74 'simpl':20,73 'singl':78 'stabl':33 'storag':50 'support':41,88 'tini':5 'typescript':13,82,94 'typescript-first':81 'valid':87 'version':34 'written':11 'zero':75","created_at":"2026-06-04T18:52:47.666362+00:00","updated_at":"2026-06-04T18:52:47.666362+00:00","problems":[{"fix":"const miningo = require('miningo').default","cause":"CommonJS require('miningo') returns the default export as an object with a default property","error":"TypeError: miningo is not a function"},{"fix":"Use import InMemoryAdapter from 'miningo/adapters/InMemoryAdapter'","cause":"Tried to import from 'miningo' instead of the subpath","error":"Cannot find module 'miningo/adapters/InMemoryAdapter'"},{"fix":"Pass a new adapter instance: miningo(new InMemoryAdapter())","cause":"Passed adapter incorrectly (e.g., forgot 'new')","error":"Error: Adapter is not an instance of IAdapter"},{"fix":"Use LocalStorageAdapter from 'miningo/adapters/LocalStorageAdapter'","cause":"Spelling mismatch; correct name is LocalStorageAdapter","error":"Error: No such adapter: BrowserLocalStorageAdapter"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/RyosukeCla/miningo#readme","github":"https://github.com/RyosukeCla/miningo","docs":null,"changelog":null,"pypi":null,"npm":"miningo","openapi_spec":null,"status_page":null,"smithery":null,"categories":["database"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-04","next_check":"2026-09-02","install_tag":null}}