https://github.com/eldoy/rundb
RunDB in-memory database with persistence for NodeJS.
https://github.com/eldoy/rundb
Last synced: 10 months ago
JSON representation
RunDB in-memory database with persistence for NodeJS.
- Host: GitHub
- URL: https://github.com/eldoy/rundb
- Owner: eldoy
- Created: 2021-02-26T05:49:31.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2021-02-28T01:57:16.000Z (over 5 years ago)
- Last Synced: 2025-01-03T15:28:02.013Z (over 1 year ago)
- Language: JavaScript
- Homepage:
- Size: 106 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# RunDB
RunDB in-memory database with persistence for NodeJS. Fast database for small to medium size data sets.
Based on [NeDB](https://github.com/louischatriot/nedb) and follows the [Waveorb database adapter spec.](https://github.com/eldoy/waveorb-db)
### Install
`npm i rundb`
### Usage
**Connect to database**
```js
const connection = require('rundb')
const db = await connection()
```
**Create document**
```js
// Returns the created id: { id: '507f191e810c19729de860ea' }
// Takes only 1 argument: values
const result = await db('project').create({ name: 'hello' })
```
**Create multiple documents**
```js
// Returns the the created count and the created ids:
// { n: 2, ids: ['507f191e810c19729de860ea', '607f191e810c19729de860eb'] }
// Takes only 1 argument: values, must be array of objects
const result = await db('project').create([{ name: 'hello' }, { name: 'bye' }])
```
**Update document (updates multiple if query matches)**
```js
// Returns the number of updated documents: { n: 1 }
// Takes 2 arguments: query, values
const result = await db('project').update({ id: '507f191e810c19729de860ea' }, { name: 'bye' })
```
**Delete document (deletes multiple if query matches)**
```js
// Returns the number of deleted documents: { n: 1 }
// Takes 1 argument: query
const result = await db('project').delete({ id: '507f191e810c19729de860ea' })
```
**Find document**
```js
// Returns an array of matching documents
// Takes 2 arguments: query, options
// Find all
const result = await db('project').find()
// Find all with name 'bye'
const result = await db('project').find({ name: 'bye' })
// Find with sorting on 'name' field descending, use 1 for ascending
const result = await db('project').find({}, { sort: { name: -1 } })
// Find only 2
const result = await db('project').find({}, { limit: 2 })
// Find but skip 2
const result = await db('project').find({}, { skip: 2 })
// Find all but don't include the 'name' field in the result
const result = await db('project').find({}, { fields: { name: false } })
// Find all with 'level' field greater than 5
const result = await db('project').find({ level: { $gt: 5 }})
```
All of the [mongodb query operators](https://docs.mongodb.com/manual/reference/operator/query/) should work.
**Get document**
```js
// Returns the first matching document
// Takes 2 arguments: query, options
const result = await db('project').get({ name: 'bye' })
```
**Count documents**
```js
// Returns the count of the matching query
// Takes 2 arguments: query, options
const result = await db('project').count({ name: 'bye' })
```
**The database client**
```js
db.client
```
MIT Licensed. Enjoy!