@tibeoh/mongodb-query-builder
v0.0.3
Published
MongoDB builder
Downloads
9
Readme
Builder for MongoDB
Features
- Build params object for MongoDB queries
- Create filters object readable and it will be transform for the MongoDB parameter syntax
Installation
npm i @tibeoh/mongodb-query-builder
How to use?
const DDBBuilder = require("mongodb-query-builder");
let filters = {
meta_data: {
"number_of_views ($GT)": 1000000
}
};
let mongoDBBuilder = new DDBBuilder.MongoDBBuilder();
let params = mongoDBBuilder
.setFilters(filters)
.build();
Now you have to use params
variable for your MongoDB query.
mongoose.model.find(params).then(values => {
console.log(values)
})
MongoDBBuilder documentation
It's just an interface to call MongoDBExpressionBuilder. It will return your filters parse as Mongo (or mongoose) should use it
MongoDBExpressionBuilder documentation
List of operators:
- ($IS)
- ($IS NOT)
- ($IN)
- ($GT)
- ($GTE)
- ($LT)
- ($LTE)
- ($BETWEEN)
- ($NOT) It's the only one to be use before an other operator.
- ($OR)
- ($CONTAINS)
- ($EXISTS)
- ($OUTSIDE)
- ($BEGIN WITH)
Examples
let filters = {
meta_data: {
"year": 2018, // meta_data.year = 2018
"original_language ($IS)": "English", // meta_data.original_language = "English",
"runtime ($LTE)" : 5400, // meta_data.runtime <= 5400
"producer ($IN)": ["Avi Arad", "Syed Aman Bachchan"], // meta_data.producer IN ("Avi Arad", "Syed Aman Bachchan")
"revenue ($GT)": 10000000, // meta_data.revenue > 10000000
"vote_average ($GTE)": 4, // vote_average >= 5
"budget ($BETWEEN)": { min: 10000000, max: 200000000}, // meta_data.budget BETWEEN 10000000 AND 200000000
"vote_count ($NOT) ($LT)": 20000 // NOT meta_data.vote_count < 20000
}
};
Query looks like:
{
"meta_data.year": 2018,
"meta_data.original_language": "English",
"meta_data.runtime": { $lte: 5400 },
"meta_data.producer": { $in: ["Avi Arad", "Syed Aman Bachchan"] },
"meta_data.revenue": { $gt 1000000 },
"meta_data.vote_average": { $gte: 4 },
"meta_data.budget": { $gte: 10000000, $lte 200000000 },
"meta_data.vote_count": { $gt: 20000 }
}
Particularity : ($OR) and ($AND) should be the key of the object.
let filters = {
meta_data: {
"($OR)": [
{"vote_count ($NOT) ($LT)": 20000},
{"vote_average ($GTE)": 4}
]
}
};
TODO
- Add Comparison Operator and Function Reference missing: ("($BEGINS WITH)", "attribute_exists", "attribute_not_exists", "attribute_type")