mongo-simple-aggregation-builder
Advanced tools
+1
-1
| { | ||
| "name": "mongo-simple-aggregation-builder", | ||
| "version": "1.0.3", | ||
| "version": "1.0.4", | ||
| "description": "", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
+48
-7
@@ -18,2 +18,3 @@ # mongo-simple-aggregation-builder | ||
| - [Filter][Filter] | ||
| - [Unset][Unset] | ||
@@ -39,5 +40,5 @@ ## Install | ||
| const groupStage = new GroupBuilder('id') | ||
| const groupStage = new GroupBuilder('_id') | ||
| .count('total') | ||
| .sum('aggregated_field', 'aggregated_val'); | ||
| .sum('aggregated_field', 'calculated_field'); | ||
@@ -49,2 +50,4 @@ const pipeline = new Builder() | ||
| .build(); | ||
| const response = await db.<collection>.aggregate(pipeline); | ||
| ``` | ||
@@ -54,12 +57,49 @@ | ||
| ### Project Builder | ||
| ```ts | ||
| test('project Builder', () => { | ||
| const expected = { | ||
| field_name: 1, | ||
| calculated_field: '$another_field', | ||
| remove_field: 0, | ||
| }; | ||
| const recieved = new ProjectBuilder() | ||
| .includeField('field_name') | ||
| .addField('calculated_field', '$another_field') | ||
| .excludeField('remove_field'); | ||
| expect(recieved).toEqual(expected); | ||
| }); | ||
| ``` | ||
| ### Group Builder | ||
| ```ts | ||
| test('group Builder', () => { | ||
| const expected = { | ||
| _id: 'groupName', | ||
| aggregated_field: { $sum: '$aggregated_val' }, | ||
| }; | ||
| const recieved = new GroupBuilder('groupName').sum('aggregated_field', 'aggregated_val'); | ||
| expect(recieved).toEqual(expected); | ||
| }); | ||
| ``` | ||
| ## Tests | ||
| ### filter | ||
| ```ts | ||
| test('filter and return first from db array', () => { | ||
| const expected = { | ||
| mysql_db: { | ||
| $first: { | ||
| $filter: { input: '$db_list', as: 'db', cond: { $eq: ['$$db.name', 'mysql'] } }, | ||
| }, | ||
| }, | ||
| }; | ||
| Run unit tests: | ||
| const mysqlDb = new Comparison(Operator.EQ, '$$db.name', 'mysql'); | ||
| const filterSourcesArray = new Filter('$db_list', 'db', mysqlDb); | ||
| const received = new ProjectBuilder().addField('mysql_db', filterSourcesArray.first()); | ||
| expect(JSON.stringify(received)).toEqual(JSON.stringify(expected)); | ||
| }); | ||
| ``` | ||
| npm test | ||
| ``` | ||
| [Project]: https://www.mongodb.com/docs/manual/reference/operator/aggregation/project/ | ||
@@ -69,2 +109,3 @@ [Facet]: https://www.mongodb.com/docs/manual/reference/operator/aggregation/facet/ | ||
| [Unwind]: https://www.mongodb.com/docs/manual/reference/operator/aggregation/Unwind/ | ||
| [Filter]: https://www.mongodb.com/docs/manual/reference/operator/aggregation/Filter/ | ||
| [Filter]: https://www.mongodb.com/docs/manual/reference/operator/aggregation/Filter/ | ||
| [Unset]: https://www.mongodb.com/docs/manual/reference/operator/aggregation/unset/ |
44422
3.06%106
63.08%