Nested Public Modules

    mql-match
    TypeScript icon, indicating that this package has built-in type declarations

    0.4.0 • Public • Published

    mql-match

    npm version Dependencies Status

    This project compiles a valid MQL (MongoDB Query Language) query to a native JavaScript matching function. It uses code generation technics to improve matching performance.

    Why

    This project can be useful to mock some basic functionality of MongoDB's driver or simply using its query syntax for object matching.

    Operators support

    Currently, not all operators are supported. Future updates will bring support for more operators.

    Comparison

    • [x] $eq
    • [x] $gt Numbers, dates, and strings only.
    • [x] $gte Numbers, dates, and strings only.
    • [x] $in
    • [x] $lt Numbers, dates, and strings only.
    • [x] $lte Numbers, dates, and strings only.
    • [x] $ne
    • [x] $nin

    Logical

    • [x] $and
    • [x] $not
    • [x] $nor
    • [x] $or

    Element

    • [x] $exists
    • [x] $type Types "binData", "dbPointer", "javascript", "javascriptWithScope", "timestamp", "minKey", and "maxKey" are not supported.

    Evaluation

    • [ ] $expr
    • [ ] $jsonSchema
    • [x] $mod
    • [x] $regex
    • [ ] $text
    • [ ] $where

    Geospatial

    • [ ] $geoIntersects
    • [ ] $geoWithin
    • [ ] $near
    • [ ] $nearSphere

    Array

    • [x] $all
    • [x] $elemMatch
    • [x] $size

    Bitwise

    • [ ] $bitsAllClear
    • [ ] $bitsAllSet
    • [ ] $bitsAnyClear
    • [ ] $bitsAnySet

    Projection

    • [ ] $
    • [ ] $elemMatch
    • [ ] $meta
    • [ ] $slice

    Miscellaneous

    • [x] $comment Stub.
    • [ ] $rand

    Example

    import { ObjectId } from 'mongodb'
    import { compile } from 'mql-match'
    
    const match = compile({
      value: {
        $in: [42, 130]
      }
    })
    
    const documents = [
      {
        _id: new ObjectId(),
        value: 130
      },
      {
        _id: new ObjectId(),
        value: 0
      },
      {
        _id: new ObjectId(),
        value: 42
      }
    ]
    
    for (const document of documents) {
      if (match(document)) {
        console.log(document._id) // will log 2 documents
      }
    }

    Install

    npm i mql-match

    DownloadsWeekly Downloads

    1

    Version

    0.4.0

    License

    MIT

    Unpacked Size

    17.6 kB

    Total Files

    5

    Last publish

    Collaborators

    • greguz