Git Product home page Git Product logo

expression-to-mql's Introduction

expression-to-mql

A node package and CLI executable to parse arithmetic expressions and convert them to MongoDB aggregation expressions.

Features

The expression language allows the following:

  • Field names (unquoted, or quoted with single or double quotes)
  • Reference to nested fields using dot notation: product.quantity
  • Literal numbers (integer or decimal)
  • Operators: +, -, *, /
  • Brackets for grouping (, )
  • Whitespace outside of quoted strings is irrelevant

Examples of valid expressions:

  • price * quantity
  • 'total amount' * 1.1
  • (foo.temp - 32)*5/9

The expressions are converted to valid MongoDB Aggregation Expressions to be used in $project or $addFields stages.

CLI usage

While the intended use is programmatic via ES6 modules or CommonJS require, it also comes with a tiny executable so that it can easily be used at the command line. To use this tool from the command line, follow these steps:

  1. npm install -g expression-to-mql
  2. expr2mql 'foo + 1'

Alternatively, you can check out the repository locally and run:

node ./bin/expr2mql.js 'foo + 1'

API usage

The main function is exprToMQL(), which can be used as follows:

import exprToMQL from 'expression-to-mql';

const mql = exprToMQL('foo + 1');
console.log( JSON.stringify(mql) );

This would output

{"$sum":["$foo",1]}

expression-to-mql's People

Contributors

rueckstiess avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.