npm.io
0.11.0 • Published 4 months ago

bumbledb

Licence
MIT
Version
0.11.0
Deps
1
Size
21 kB
Vulns
0
Weekly
0
Stars
1

BumbleDB

Embedded, file-based database with MongoDB-like API for Node.js

Getting started

import initializeDb from 'bumbledb';

const dataDirectory = process.env.DATA_DIRECTORY ?? '.data';

const db = await initializeDb(dataDirectory);

const someDocument = { id: 1, name: 'Meredith', country: 'US' };
await db.collection('users').insertOne(someDocument);

const result = await db.collection('users').find({}).toArray();
console.log(result);

Insert data

insertOne
const someDocument = { id: 1, name: 'Meredith', country: 'US' };
await db.collection('users').insertOne(someDocument);
insertMany
const someDocuments = [
  { id: 1, name: 'Meredith', country: 'US' },
  { id: 2, name: 'Monika', country: 'DE' }
];
await db.collection('users').insertMany(someDocuments);

Query data

findOne
const result = await db.collection('users').findOne({ id: 5 });
find

Get all documents

const result = await db
  .collection('users')
  .find({})
  .toArray();

Get documents matching query

const result = await db
  .collection('users')
  .find({ name: 'Monika', country: 'DE' })
  .toArray();

Query using nested attributes

const result = await db
  .collection('users')
  .find({ 'address.country': 'DE' })
  .toArray();

Stream results with async iteration

for await (const user of db.collection('users').find({ country: 'DE' })) {
  console.log(user);
}

Update data

update
const newDocument = { id: 1, name: 'users', country: 'US' };
await db.collection('users').update({ id: 1 }, newDocument);

Delete data

delete
const affected = await db.collection('users').delete({ id: 1 });

Drop data

Drop a collection
await db.collection('users').drop();
Drop the database
await db.drop();

List collections

collections
const names = await db.collections();
// ['users', 'posts']