bloc

0.0.1 • Public • Published

Bloc

Functional Reactive array filtering and aggregation with a MongoDB inspired syntax.

Usage

For normal usage arrays are returned with the results.

var Bloc = require('bloc');
var data = [
  {
    id: 1,
    region: 'us-east-1'
  },
  {
    id: 2,
    region: 'us-west-1'
  }
];
var filter = {
  region: {
    $eq: 'us-east-1'
  }
};
 
Bloc.filter(data, filter).then(function(results) {
  // Results contains all items in the `us-east-1` region.
}, function(reason) {
 // Something went wrong
});

If desired, a stream can be returned instead.

var Bloc = require('bloc');
var data = [
  {
    id: 1,
    region: 'us-east-1'
  },
  {
    id: 2,
    region: 'us-west-1'
  }
];
var filter = {
  region: {
    $eq: 'us-east-1'
  }
};
 
Bloc.filter(data, filter, { stream: true }).then(function(stream) {
  stream.subscribe(function(item) {
    // Stream will eventually contain all items in the `us-east-1` region.
  });
}, function(reason) {
 // Something went wrong
});

Query Selectors

Below is a list of all the supported query selectors.

Comparison Operators

Used for the comparison of different values for filters.

$eq

Matches all values that are equal to a specified value.

{
  <field>: { 
    $eq: <value>
  }
}

$ne

Matches all values that are not equal to a specified value.

{
  <field>: { 
    $ne: <value>
  }
}

$gt

Matches values that are greater than a specified value.

{
  <field>: { 
    $gt: <value>
  }
}

$gte

Matches values that are greater than or equal to a specified value.

{
  <field>: { 
    $gte: <value>
  }
}

$lt

Matches values that are less than a specified value.

{
  <field>: { 
    $lt: <value>
  }
}

$lte

Matches values that are less than or equal to a specified value.

{
  <field>: { 
    $lte: <value>
  }
}

$in

Matches any of the values specified in an array.

{
  <field>: { 
    $in: [ <value1>, <value2>, ... <valueN> ]
  }
}

$nin

Matches none of the values specified in an array.

{
  <field>: { 
    $nin: [ <value1>, <value2>, ... <valueN> ]
  }
}

$mod

Performs a modulo operation on the value of a field and selects documents with a specified result.

{
  <field>: {
    $mod: [
      divisor,
      remainder
    ]
  }
}

$regex

Selects documents where values match a specified regular expression.

{
  <field>: {
    $regex: <regular expression>
  }
}

$where

Matches documents that satisfy a JavaScript function.

{
  <field>: {
    $where: <function>
  }
}

Logical Operators

Used for grouping together filter clauses.

$or

Joins query clauses with a logical OR returns all documents that match the conditions of either clause.

{ 
  $or: [
    {
      <expression1>
    },
    {
      <expression2>
    },
    ...,
    {
      <expressionN>
    }
  ]
}

$and

Joins query clauses with a logical AND returns all documents that match the conditions of both clauses.

{ 
  $and: [
    {
      <expression1>
    },
    {
      <expression2>
    },
    ...,
    {
      <expressionN>
    }
  ]
}

$not

Inverts the effect of a query expression and returns documents that do not match the query expression.

{
  <field>: {
    $not: {
      <operator>: <value>
    }
  }
}

$nor

Joins query clauses with a logical NOR returns all documents that fail to match both clauses.

{ 
  $nor: [
    {
      <expression1>
    },
    {
      <expression2>
    },
    ...,
    {
      <expressionN>
    }
  ]
}

Array Operators

Operators to use when filtering arrays.

$all

Matches arrays that contain all elements specified in the query.

{
  <field>: {
    $all: [
      <value1>,
      <value2>,
      ...,
      <valueN>
    ]
  }
}

$elemMatch

Selects documents if element in the array field matches all the specified conditions.

{
  <field>: {
    $elemMatch: {
      <query1>,
      <query2>,
      ...,
      <queryN>
    }
  }
}

$size

Selects documents if the array field is a specified size.

{
  <field>: {
    $size: <number>
  }
}

Package Sidebar

Install

npm i bloc

Weekly Downloads

8

Version

0.0.1

License

none

Last publish

Collaborators

  • davidtpate