
Company News
Socket Named Top Sales Organization by RepVue
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.
mongodb-query-filter
Advanced tools
Forked from https://github.com/Turistforeningen/node-mongo-querystring.
Accept MongoDB query parameters through URI queries safe and easy. This is useful when building an API and accepting various user specificed queries.
$eq$gt$gte$lt$lte$ne$in$nin$exists$regex| operation | query string | query object |
|---|---|---|
| equal | ?foo=bar | { foo: "bar" } |
| unequal | ?foo=!bar | { foo: { $ne: "bar" }} |
| exists | ?foo= | { foo: { $exists: true }} |
| not exists | ?foo=! | { foo: { $exists: false }} |
| greater than | ?foo=>10 | { foo: { $gt: 10 }} |
| less than | ?foo=<10 | { foo: { $lt: 10 }} |
| greater than or equal to | ?foo=>=10 | { foo: { $gte: 10 }} |
| less than or equal to | ?foo=<=10 | { foo: { $lte: 10 }} |
| starts with | ?foo=^bar | { foo: { $regex: "^bar", $options: "i" }} |
| ends with | ?foo=$bar | { foo: { $regex: "bar$", $options: "i" }} |
| contains | ?foo=~bar | { foo: { $regex: "bar", $options: "i" }} |
| in array | ?foo[]=bar&foo[]=baz | { foo: { $in: ['bar', 'baz'] }} |
| not in array | ?foo[]=!bar&foo[]=!baz | { foo: { $nin: ['bar', 'baz'] }} |
$geoWithin (polygon)$near (point)| operation | query string | query object |
|---|---|---|
| bbox | ?bbox=0,1,2,3 | { geojson: { $geoWithin: { $geometry: { … } } } } |
| near | ?near=0,1 | { geojson: { $near: { $geometry: { … } } } } |
| near (max distance) | ?near=0,1,2 | { geojson: { $near: { …, $maxDistance: 2 } } } |
| near (max & min distance) | ?near=0,1,2,3 | { geojson: { $near: { …, $minDistance: 3 } } } |
after (date)before (date)between (date|date)| operation | query string | query object |
|---|---|---|
| after | ?after=2014-01-01 | { endret: { $gte: "2014-01-01T00:00:00.000Z" } } |
| after | ?after=1388534400 | { endret: { $gte: "2014-01-01T00:00:00.000Z" } } |
| before | ?before=2014-01-01 | { endret: { $lt: "2014-01-01T00:00:00.000Z" } } |
| before | ?before=1388534400 | { endret: { $lt: "2014-01-01T00:00:00.000Z" } } |
| between | ?between=2014-01-01|2015-01-01 | { endret: { $gte: "2014-01-01T00:00:00.000Z", $lt: "2015-01-01T00:00:00.000Z" } } |
| between | ?between=1388534400|1420088400 | { endret: { $gte: "2014-01-01T00:00:00.000Z", $lt: "2015-01-01T00:00:00.000Z" } } |
npm install mongo-querystring --save
var MongoQS = require('mongo-querystring');
object options)Array ops - list of supported operators (default: ['!', '^', '$', '~', '>', '<', '$in'])object alias - query param aliases (default: {})object blacklist - blacklisted query params (default: {})object whitelist - whitelisted query params (default: {})object custom - custom query params (default: {})object string - string parsing
boolean toBoolean - parse "true", "false" string to booleans (default: true)boolean toNumber - parse string integer and float values to numbers (default: true)regexp keyRegex - allowed key names (default: /^[a-zæøå0-9-_.]+$/i)regexp arrRegex - allowed array key names (default: /^[a-zæøå0-9-_.]+(\[\])?$/i)bbox - bounding box geostatial querynear - proximity geostatial queryafter - modified since queryvar qs = new MongoQS({
custom: {
bbox: 'geojson', // your geometry field
near: 'geojson', // your geometry field
after: 'updated_on' // your last modified field
}
});
Custom queries are on the folling form; you define the URL query parameter name that your users will be using and a function which takes the result query object and the value for query parameter.
var qs = new MongoQS({
custom: {
urlQueryParamName: function(query, input) {
// do some processing of input value
// add your queries to the query object
query['someField'] = input;
query['someOtherFiled'] = 'some value';
}
}
});
object params)Params is an object with URI query params and their values. Ex. req.params
if you are working with ExpressJS.
var query = qs.parse(req.params);
mongo.collection('mycol').find(query, field).toArray(function(err, documents) {
// matching documents
});
Individuals making significant and valuable contributions are made Collaborators and given commit-access to the project. These individuals are identified by the existing Collaborators and their addition as Collaborators is discussed as a pull request to this project's README.md.
Note: If you make a significant contribution and are not considered for commit-access log an issue or contact one of the Collaborators directly.
FAQs
Parse and pass URL queries to MongoDB query
We found that mongodb-query-filter demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Company News
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.

Security News
NIST will stop enriching most CVEs under a new risk-based model, narrowing the NVD's scope as vulnerability submissions continue to surge.

Company News
/Security News
Socket is an initial recipient of OpenAI's Cybersecurity Grant Program, which commits $10M in API credits to defenders securing open source software.