0.5.0 • Published 1 year ago

mongowave v0.5.0

Weekly downloads
62
License
MIT
Repository
-
Last release
1 year ago

Mongowave MongoDB Client

Javascript MongoDB database client boasting the following features:

  • Intuitive API
  • Automatic timestamps (created_at, updated_at)
  • Custom string id
  • Using id instead of _id
  • Insert, update and delete multiple by default
  • Returns full object on create
  • Updates with $set by default
  • Retry connection on fail

Install

npm i mongowave

Usage

Connect to database:

const connection = require('mongowave')

Default options:

const db = await connection({
  // URL of database server
  url: 'mongodb://localhost:27017',

  // Name of database
  name: 'wdb',

  // Automatically set created_at and updated_at fields on change
  timestamps: true,

  // Function used to generate ids
  id: cuid,

  // Use 'id' instead of '_id'
  simpleid: true,

  // The default size for batch queries
  batchsize: 20,

  // Connection options for Mongodb Client
  connection: {
    useNewUrlParser: true,
    useUnifiedTopology: true
  }
})

If you want to use underscore ids and ObjectIds (default MongoDB behavior):

const db = await connection({
  // Let MongoDB generate id
  id: false,

  // Use '_id' instead of 'id'
  simpleid: false
})

Insert document:

// Returns the full document:
// { id: '507f191e810c19729de860ea', name: 'hello' }
// Takes only 1 argument: values
const result = await db('project').create({ name: 'hello' })

Insert multiple documents:

// Returns the full documents:
// [
//   { id: '507f191e810c19729de860ea', name: 'hello' },
//   { id: '607f191e810c19729de860eb', name: 'bye' }
// ]
// 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):

// 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):

// Returns the number of deleted documents: { n: 1 }
// Takes 1 argument: query
const result = await db('project').delete({ id: '507f191e810c19729de860ea' })

Find documents, all of the mongodb query operators work:

// 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 }})

Get document:

// Returns the first matching document
// Takes 2 arguments: query, options
const result = await db('project').get({ name: 'bye' })

Count documents:

// Returns the count of the matching query
// Takes 2 arguments: query, options
const result = await db('project').count({ name: 'bye' })

Use the mongodb client base directly:

db.base.collection('project').findOne({ _id: insert.id })

The mongodb client:

db.client

MongoDB ObjectId short cut:

// Generate a new ID
db.id()

There's also set, search, batch, each, aggregate, index, deindex and analyze. Read the source code to find out how to use them.

MIT Licensed. Enjoy!

0.5.0

1 year ago

0.4.13

1 year ago

0.4.11

1 year ago

0.4.12

1 year ago

0.4.9

1 year ago

0.4.8

1 year ago

0.4.10

1 year ago

0.4.5

1 year ago

0.4.4

1 year ago

0.4.7

1 year ago

0.4.6

1 year ago

0.4.1

1 year ago

0.4.0

1 year ago

0.3.1

1 year ago

0.4.3

1 year ago

0.4.2

1 year ago

0.3.0

2 years ago

0.2.6

2 years ago

0.2.5

3 years ago

0.2.4

3 years ago

0.2.3

3 years ago

0.2.2

3 years ago

0.2.1

3 years ago

0.2.0

3 years ago

0.1.6

3 years ago

0.1.5

3 years ago

0.1.4

3 years ago

0.1.3

4 years ago

0.1.2

4 years ago

0.1.0

4 years ago

0.1.1

4 years ago

0.0.1

5 years ago