GitXplorerGitXplorer
D

bloc

public
1 stars
0 forks
10 issues

Commits

List of commits on branch master.
Unverified
8c21e5e98b701f2cdf18d8a97e68d68a875df55c

Merge pull request #2 from DavidTPate/greenkeeper/initial

DDavidTPate committed 8 years ago
Unverified
5facb4045220963fda233cf9bc8f5f202f7a3c0e

docs(readme): add Greenkeeper badge

ggreenkeeper[bot] committed 8 years ago
Unverified
6aed638c69411500f7d818c07b1c2887ba88dd0d

chore(package): update dependencies

ggreenkeeper[bot] committed 8 years ago
Unverified
e92c7a90ce559b2d857d064d3c2cf1faadbd967b

Merge pull request #1 from DavidTPate/feature/allow-streams-as-input

DDavidTPate committed 10 years ago
Unverified
34101a9c653c44a500af90636237a21a2313f4ac

Add aggregator functions to documentation.

DDavidTPate committed 10 years ago
Unverified
44bc07e7e161164429f225d7bdec5a93386bb354

Add the ability to use streams as the input instead of just arrays.

DDavidTPate committed 10 years ago

README

The README file for this repository.

Bloc

Greenkeeper badge 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> ]
  }
}

Evaluation Operators

Operators which do some sort of evaluation.

$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 the specified size.

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

Aggregation Operators

Operators to use when setting up pipeline stages.

$match

Filters the document stream to allow only matching documents to pass unmodified into the next pipeline stage. $match uses standard queries. For each input document, outputs either one document (a match) or zero documents (no match).

{
  $match: { 
    <query> 
  } 
}

$limit

Passes the first n documents unmodified to the pipeline where n is the specified limit. For each input document, outputs either one document (for the first n documents) or zero documents (after the first n documents).

{
  $limit: <positive integer> 
}

$skip

Skips the first n documents where n is the specified skip number and passes the remaining documents unmodified to the pipeline. For each input document, outputs either zero documents (for the first n documents) or one document (if after the first n documents).

{
  $skip: <positive integer> 
}