bloc
v0.0.1
Published
Functional Reactive array filtering and aggregation with a MongoDB inspired syntax.
Downloads
13
Maintainers
Readme
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>
}
}