1.2.1 • Published 4 years ago

@quenk/search-filters-mongodb v1.2.1

Weekly downloads
1
License
Apache-2.0
Repository
-
Last release
4 years ago

Search Filters MongoDB

search-filters compiler for mongodb targets

Installation

npm install --save @quenk/search-filters-mongodb

Usage

This module provides a @quenk/search-filters compiler for generating mongodb query filters from a source string. It targets the Node.js Driver API particularly the Collection#find method.

To compile a source string, create an instance of MongoDBFilterCompiler, and apply the compile() method. It takes an EnabledPolicies and a valid search-filters source string.

Available Policies

This module ships with the following Available Policies :

Policy NameTypeOperatorsNotes
numbernumber= < > >= <= !=
booleanboolean= < > >= <= !=
stringstring= !=Tests equality.
matchstring=Converts value to regex.
matchcistring=Case-insensitive "match".
datedate= < > >= <= !=Actual value instanceof Date (UTC)
datetimedatetime= < > >= <= !=Actual value instanceof Date (UTC)
numberslist-numberin !in
booleanslist-booleanin !in
stringslist-stringin !in
dateslist-datein !in
datetimeslist-datetimein !in

You can specify one of the above policy names in your EnabledPolicies and it will be subsitituted at compile time.

Consult the search-filters docs for more information.

You can add additional AvailablePolicies by overriding the policies argument of the MongoDBFilterCompiler constructor.

Example

import {Value} from '@quenk/noni/lib/data/jsonx';
import {MongoDBFilterCompiler} from '@quenk/search-filters-mongodb';
import {FilterTerm} from '@quenk/search-filters-mongodb/lib/term';

const policies = {

 name: 'matchci',

 age: 'number'

 status: {

   type: 'number',
   operators: ['='],
   term: (field:string, op:string, value:Value ) => 
       new FilterTerm(field, op, value)

 }

}

const qry = '(name:"sana" or name:="Murr") and age:>20 and status:1';

let mfc = new MongoDBFilterCompiler();

let eResult = mfc.compile(qry);

/* Logs the below or throws if an error occured. 
  {"$and":
    [
       {
         "$or":[
            {"name":{"$regex":"sana", $options:"i"}},
            {"name":{"$regex":"Murr", $options:"i"}}
          ]
        },
        {"age":{"$gt":20}},
        {"status":{"$eq":1}}
    ]
   }
*/
console.log(eResult.takeRight());

License

Apache 2.0 (SEE LICENSE) file. (c) Quenk Technologies Limited.

1.2.1

4 years ago

1.2.0

4 years ago

1.1.1

4 years ago

1.1.0

4 years ago

1.0.9

4 years ago

1.0.8

4 years ago

1.0.7

4 years ago

1.0.6

4 years ago

1.0.5

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago