1.0.1 • Published 2 years ago

native-mongo-filter v1.0.1

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

Easily filter nested objects using MongoDB-like syntax!

Install

yarn install native-mongo-filter

Usage

Filter by greater than and greater than equal to:

const MongoFilter = require('native-mongo-filter')

const data = { a: 1, }, { a: 2, }, { a: 3, }

const filter = MongoFilter({ a: { $gt: 1, $gte: 2, } })

filter(data) / returns { a: 2, }, { a: 3, } /

> Filter by less than, less than equal to:
```js
const MongoFilter = require('native-mongo-filter')

const data = [
  {
    a: 0,
  },
  {
    a: 1,
  },
  {
    a: 2,
  }
]

const filter = MongoFilter({
  a: {
    $lt: 1,
    $lte: 2,
  }
})

filter(data)
/*
returns [
  {
    a: 0,
  }
]
*/

Filter by equal to and not equal to

const MongoFilter = require('native-mongo-filter')

const data = { a: 0, }, { a: 1, }, { a: 2, }

const filter = MongoFilter({ a: { $eq: 1, $ne: 2, } })

filter(data) / returns { a: 1, } /

> Filter by size of arrays
```js
const MongoFilter = require('native-mongo-filter')

const data = [
  {
    a: 1,
    b: [1, 2, 3]
  },
  {
    a: 1,
    b: [1, 2, 3, 4]
  },
  {
    a: 1,
    b: [1, 2, 3, 4, 5]
  },
]

const filter = MongoFilter({
  a: {
    $eq: 1,
  },
  b: {
    $size: 5,
  }
})

filter(data)
/*
returns [{
    a: 1,
    b: [1, 2, 3, 4, 5]
  }
}]
*/

Filter by whether in array or not

const MongoFilter = require('native-mongo-filter')

const data = { a: 1, b: 7 }, { a: 2, b: 8 }, { a: 3, b: 9 },

const filter = MongoFilter({ a: { $in: 1, 2, 3 // in }, b: { $nin: 4, 8, 9 // not in } })

filter(data) / returns { a: 1, b: 7 }, } /

> Use "and" and "or" clauses
```js
const MongoFilter = require('native-mongo-filter')

const data = [
  {
    a: 1,
    b: 2,
    c: 3,
    d: 4,
  },
  {
    a: 123,
    b: 124,
    c: 24,
    d: 23,
  },
  {
    a: 1,
    b: 2,
    c: 3,
    e: 4,
  },
]

const filter = MongoFilter({
  $and: [
    { b: 1, a: 2 },
    { c: 3 }
  ],
})

filter(data)
/*
returns [{
    a: 1,
    b: 2,
    c: 3,
    d: 4,
  },
  {
    a: 1,
    b: 2,
    c: 3,
    e: 4,
  },
}]
*/

Example combining many filters

const MongoFilter = require('native-mongo-filter')

const data = { a: { b: 4, c: 2, d: 5, e: 12 } }, { a: { b: 4, c: 2, d: 5, e: 11 } },

const filter = MongoFilter({ a: { b: { $gt: 3, $lt: 10, }, c: { $in: 1, 2, 3 }, d: 5, e: { $ne: 12 } } })

filter(data) / returns { a: { b: 4, c: 2, d: 5, e: 11 } }, } /

## License

MIT © Andre Poupard