🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
Book a DemoInstallSign in
Socket

array-aggregate

Package Overview
Dependencies
Maintainers
0
Versions
17
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

array-aggregate

Mongo-like aggregate for arrays

1.2.0
latest
Source
npm
Version published
Weekly downloads
3
-76.92%
Maintainers
0
Weekly downloads
 
Created
Source

array-aggregate - Mongo-like querying and filtration

CI codecov

Installation

yarn add array-aggregate

Usage

import { makeQueryFilter } from 'array-aggregate'

const filterFn = makeQueryFilter({
  tags: 'bar',
  'history.creator': 1, // User Id
})

console.log(
  filterFn({
    tags: ['foo', 'bar', 'etc'],
    history: [
      {
        creator: 0,
      },
      {
        creator: 1,
      },
    ],
  }),
) // true

console.log(
  filterFn({
    tags: ['foo', 'etc'],
    history: [
      {
        creator: 0,
      },
      {
        creator: 1,
      },
    ],
  }),
) // false

console.log(
  filterFn({
    tags: ['foo', 'bar', 'etc'],
    history: [
      {
        creator: 0,
      },
    ],
  }),
) // false

Built-in operators

$eq

Check that value is equal to some in query. Work with array, string, number, Date, boolean

$gt

Check that value is greater than some in query. Work with number, Date

$gte

Check that value is greater than or equal some in query. Work with number, Date

$lt

Check that value is less than some in query. Work with number, Date

$lte

Check that value is less than or equal some in query. Work with number, Date

$ne

Check that value is not equal some in query. Work with array, string, number, Date, boolean

$in

Check that value is a member of some in query. Work with array, string, number

$nin

Check that value is not a member of some in query. Work with array, string, number

Built-in logical Operators

$and

Check that all matches are true

$or

Check that at least one matches are true

$nor

Check that all matches are false

$not

Negotiate inner condition result

Built-in element Operators

$exists

If it's true we will check that needed field exists in object, if it's false we will check that needed field is not inside object

Array Operators

$all

Check that all elements from rule are present in value.

$size

Check that array or string have needed length

$elemMatch

Apply some rule to array elements

Big query example

import { makeQueryFilter } from 'array-aggregate'

const secondQuery = makeQueryFilter({
  foo: {
    $eq: 'bar',
    $exists: true,
  },
  createdAt,
  ololo: {
    a: {
      $exists: false,
    },
  },
  a: {
    b: {
      c: {
        $lte: 1,
      },
    },
  },
  'a[0].b.c': {
    // We can use path for accesing fields with index selection if it's needed
    $gte: 1,
  },
})

console.log(
  secondQuery({
    foo: ['bar', 'test'],
    createdAt,
    a: [
      {
        b: [
          {
            c: 1,
          },
        ],
      },
    ],
  }),
) // true

Keywords

aggregate

FAQs

Package last updated on 11 Nov 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts