Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ryosukecla/miningo

tiny embedding document-oriented database written in typescript for nodejs and browser.
https://github.com/ryosukecla/miningo

database document-database embedding nodejs nosql typescript

Last synced: 3 months ago
JSON representation

tiny embedding document-oriented database written in typescript for nodejs and browser.

Awesome Lists containing this project

README

        

# Miningo [![Build Status](https://travis-ci.org/RyosukeCla/miningo.svg?branch=master)](https://travis-ci.org/RyosukeCla/miningo)
Tiny embedding document-oriented database written in typescript.

- For playground / experimental / simple / application use.
- For who not want to use mongodb / redis / postgress, but want to use database.

## installation
```
$ npm i miningo
```

## API
### import
- esmodule / ts
```js
import miningo from 'miningo'
```

- commonjs
```js
const miningo = require('miningo').default
```

### create client
```ts
const db = miningo()
```

### create client with adapter
```ts
// default
import InMemoryAdapter from 'miningo/adapters/InMemoryAdapter'
const db = miningo(new InMemoryAdapter())

// persistent json storage. save json to dataDir. very low performance.
import JsonStorageAdapter from 'miningo/adapters/JsonStorageAdapter'
const db = miningo(new JsonStorageAdapter('./data'))

// persistent storage faster than json storage.
import FastStorageAdapter from 'miningo/adapters/FastStorageAdapter'
const db = miningo(new FastStorageAdapter('./data'))

// persistent local storage for browser.
import LocalStorageAdapter from 'miningo/adapters/LocalStorageAdapter'
const namespace = 'test'
const db = miningo(new LocalStorageAdapter(namespace))

// commonjs
const JsonStorageAdapter = require('miningo/adapters/JsonStorageAdapter').default
```

### create or get collection
```ts
interface Human {
name: string
}

const Human = db.collection('Human')
// or you can use json schema
const Human = db.collection('Human', {
name: { type: 'string' }
})
```

### drop collection
```ts
await Human.drop()
```

### insert document
```ts
const you = await Human.insert({ name: 'you' })
```

### insert documents
```ts
const [you, me] = await Human.insertMany([{ name: 'you' }, { name: 'me' }])
```

### find document
```ts
const doc = await Human.find(you._id)
```

### find all documents
```ts
const docs = await Human.findAll()
```

### find documents by ids
```ts
const docs = await Human.findMany([you._id, me._id])
```

### find documents by very simple query (not support operators such as $or, $in ...)
```ts
const [you] = await Human.findBy({ name: 'you' })
```

### update document
```ts
const updated = await Human.update(you._id, { name: 'me' })
```

### remove document
```ts
const removed = await Human.remove(you._id)
```

### remove documents
```ts
const removed = await Human.removeMany([you._id, me._id])
```

### collection size
```ts
await Human.size()
```