1.4.4 • Published 2 years ago

mongoose-querybuilder v1.4.4

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

Mongoose-QueryBuilder

https://www.npmjs.com/package/mongoose-querybuilder

Supports stricter types for mongoose query specifically nested fields.

installation

$ npm i mongoose-querybuilder

Usage

Filter Query

import { QueryBuilder } from 'mongoose-querybuilder'

interface Schema {
  key1: string
  key2: string[]
  key3: {
    key4: number
    key5: string[]
  }
  key6: {
    key7: number
  }[]
  key8: number
}

const query = QueryBuilder<Schema>()
  .eq('key1','key1')
  .all('key3.key5',['s1','s2'])
  .gt('key8',10)
  .elemMatch('key6',{ key7: 1 })
  .build()

console.log(query)
// {
//   key1: 'key1',
//   'key3.key5': { $all: ['s1','s2'] },
//   key8: { $gt: 10 },
//   key6: { $elemMatch: { key7: 1 } }
// }
  • eq(key,value)
    as same as { [key]: value }

  • not(key,value)
    as same as { [key]: { $not: value } }

  • gt(key,value)
    as same as { [key]: { $gt: value } }

  • gte(key,value)
    as same as { [key]: { $gte: value } }

  • lt(key,value)
    as same as { [key]: { $lt: value } }

  • lte(key,value)
    as same as { [key]: { $lte: value } }

  • exists(key,value)
    as same as { [key]: { $exists: value } }

  • exists(key,value)
    as same as { [key]: { $exists: value } }

  • regex(key,value)
    as same as { [key]: { $regex: value } }

  • in(key,value)
    as same as { [key]: { $in: value } }

  • ne(key,value)
    as same as { [key]: { $ne: value } }

  • nin(key,value)
    as same as { [key]: { $nin: value } }

  • all(key,value)
    as same as { [key]: { $all: value } }

  • size(key,value)
    as same as { [key]: { $size: value } }

  • elemMatch(key,value)
    as same as { [key]: { $elemMatch: value } }

  • or(key,value)
    as same as { $or: [ ...value ] }

  • and(key,value)
    as same as { $and: [ ...value ] }

  • nor(key,value)
    as same as { $nor: [ ...value ] }

Update Query

import { UpdateQueryBuilder } from 'mongoose-querybuilder'

interface Schema {
  key1: string
  key2: string[]
  key3: {
    key4: number
    key5: string[]
  }
  key6: {
    key7: number
  }[]
  key8: number
}

const query = UpdateQueryBuilder<Schema>()
  .set('key1','string')
  .set('key8',10)
  .unset('key2')
  .pull('key6',{ key7: 1 })
  .push('key3.key5',{
    $each: ['1'],
    $slice: -5,
    $position: 3
  })
  .build()

console.log(query)
// {
//   $set: {
//     key1: 'string',
//     key8: 10
//   },
//   $unset: {
//     key2: 1
//   },
//   $pull: {
//     key6: {
//       key7: 1
//     }
//   },
//   $push: {
//     'key3.key5': {
//       $each: ['1'],
//       $slice: -5,
//       $position: 3
//     }
//   }
// }
  • set(key,value)
    as same as { $set: { [key]: value } }

  • unset(key)
    as same as { $unset: { [key]: 1 } }

  • push(key,value)
    as same as { $push: { [key]: value } }

  • pop(key,value)
    as same as { $pop: { [key]: value } }

  • pull(key,value)
    as same as { $pull: { [key]: value } }

  • inc(key,value)
    as same as { $inc: { [key]: value } }

1.2.0

2 years ago

1.2.8

2 years ago

1.2.7

2 years ago

1.4.4

2 years ago

1.2.6

2 years ago

1.4.3

2 years ago

1.2.5

2 years ago

1.4.2

2 years ago

1.2.4

2 years ago

1.4.1

2 years ago

1.2.3

2 years ago

1.4.0

2 years ago

1.2.2

2 years ago

1.2.1

2 years ago

1.3.9

2 years ago

1.3.8

2 years ago

1.3.7

2 years ago

1.3.6

2 years ago

1.3.5

2 years ago

1.3.4

2 years ago

1.3.3

2 years ago

1.3.2

2 years ago

1.3.1

2 years ago

1.3.0

2 years ago

1.1.16

2 years ago

1.1.19

2 years ago

1.1.18

2 years ago

1.1.17

2 years ago

1.2.9

2 years ago

1.1.20

2 years ago

1.1.15

2 years ago

1.1.14

2 years ago

1.1.13

2 years ago

1.1.12

2 years ago

1.1.11

2 years ago

1.1.10

2 years ago

1.1.9

2 years ago

1.1.8

2 years ago

1.1.7

2 years ago

1.1.6

2 years ago

1.1.5

2 years ago

1.1.4

2 years ago

1.1.3

2 years ago

1.1.2

2 years ago

1.1.1

2 years ago

1.1.0

2 years ago

1.0.9

2 years ago

1.0.8

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago