-
Notifications
You must be signed in to change notification settings - Fork 3
Comparison
This specification has similarities with existing solutions. This page tries to highlight some of the differences. If you know a similar solution, feel free to add it here.
- De-facto standard for most traditional RDBMS
- Huge feature set, supports filtering, limiting, projecting etc.
- Usually coupled to the database engine and not portable to another system
- Syntax usually exposes language features and/or uses anonymous functions.
- Serialization is difficult or impossible
- Usually not language-agnostic
The NeDB queries look similar to this specification.
Some notable exceptions are:
- Non-JSON support for
$regex
and arbitrary$where
functions - Limited
$not
combinator, but no negation prefix, the!$is
comparator is named$ne
and!$in
comparator is named$nin
The TaffyDB queries look similar to this specification.
Some notable exceptions are:
- Non-JSON support for
$regex
and arbitrary$where
functions - No support for nested attributes?
- Queries are always
$and
ed,$or
ing is only supported at the root level, no support for deeper nesting? - Comparison operators use their native representation,
$lt
is named<
MongoDB is a full-featured database server. As such, it offers fundamentally more options than just querying its datastore.
The MongoDB query language is very similar to this specification and can even be used interchangeably for simpler queries.
Some notable exceptions are:
- Non-JSON support for
$regex
and arbitrary$where
functions - Support for aggregate functions
- The
$is
comparator is named$eq
- Has
$not
operator, but no prefix, the!$is
comparator is named$neq
and!$in
comparator is named$nin
Lo-Dash (previously underscore) provides a where()
function on its collections that resemble the simple folded matching of this spec.
LokiJS implements a mongo-style query language and hence shares most of its properties.