Package Exports
- mongo-query-shape
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (mongo-query-shape) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
mongo-query-shape
Determine the "shape" of a mongo query, to help identify queries that are the same.
Queries have the same shape if they make the same type of tests on the same properties
of the documents in the collection. The test types can be EXACT
(test for equality),
RANGE
(test for bounds), or TEST
(test an indirect or computed attribute).
Summary
const queryShape = require('mongo-query-shape');
var query1 = { a: 1, b: {$gt: 1, $lt: 11}, c: {$not: { $eq: 1 } } };
var query2 = { a: 2, b: {$eq: 2}, c: {$gt: 100} };
var shape1, shape2;
shape1 = queryShape(query1);
// => { a: 'EXACT', b: 'RANGE', c: 'TEST' }
shape2 = queryShape(query2);
// => { a: 'EXACT', b: 'EXACT', c: 'RANGE' }
queryShape.isSame(shape1, shape2)
// => false
var shapeOptions = { shapeNames: { EXACT: '*', RANGE: '*', TEST: '*' } };
shape1 = queryShape(query1, shapeOptions);
// => { a: '*', b: '*', c: '*' }
shape2 = queryShape(query2, shapeOptions);
// => { a: '*', b: '*', c: '*' }
queryShape.isSame(shape1, shape2)
// => true
API
queryShape( query, [options] )
Return an object corresponding to the shape of the given mongo query. Queries that differ only in the specific values being compared to will have the same shape.
Options:
shapeNames
- hash of shape names to use, must contain entries for 'EXACT', 'RANGE' and 'TEST'
queryShape.isSame( shape1, shape2 )
Return true
if the two queries are structurally the same, else false
.
ChangeLog
- 0.1.2 - added license file
- 0.1.1 - fix: use the user-specified shape name for scalar queries, too
- 0.1.0 - first tagged version