Skip to content

Latest commit

 

History

History
490 lines (326 loc) · 14.7 KB

CHANGELOG.md

File metadata and controls

490 lines (326 loc) · 14.7 KB

Changelog

6.0.0 / 2022-01-31

New

  • Add option processingMode to control input and output behaviour.
  • Add option scriptEnabled to control whether to enable custom function operators; $where, $function, and $accumulator.
  • Add new operator type OperatorType.WINDOW.
  • Add aggregation expression operators;
    • $accumulator
    • $function
    • $getField
    • $setField
    • $unsetField
    • $sampleRate
    • $replaceOne
    • $replaceAll
  • Add pipeline operators.
    • $setWindowFields
    • $merge
    • $unionWith
  • Add window operators for $setWindowFields.
    • $denseRank
    • $derivative
    • $documentNumber
    • $expMovingAvg
    • $integral
    • $rank
    • $shift
  • Add accumulator operators.
    • $count
    • $covarianceSamp
    • $covariancePop
  • Add support for $$NOW system variable.
  • Add ISO date operators.
    • $isoWeek
    • $isoWeekYear
    • $isoDayOfWeek
  • Add support for iso8601 option to $dateToParts.
  • Add useStrictMode option to enable useful non-standard behaviour on specific operators.
    • The $elemMatch projection operator return all matching nested documents instead when useStrictMode is false.

Removed

  • Removed support for string function body in $where operator.
  • Remove addOperators function.
  • Removed Collection type.

Fixes

  • Fixed computation bug in $dateAdd and $dateSubtract operators.
  • Fix bug in sortBy which causes duplicate values.
  • Fix ranking for duplicate values for $denseRank operator.
  • Fix cursor navigation bugs.
  • Fix timezone handling in $dateToString operator.
  • Return list of single item for $count aggregation operator.

5.1.0 / 2022-01-28

Changes not published. Updates moved to 6.0.0.

5.0.0 / 2021-12-05

Changes not published. Updates moved to 6.0.0.

4.4.1 / 2021-11-16

Fixes

  • Remove lodash reference in expression operators.

4.4.0 / 2021-11-15

Features

  • Add bitwise query operators.
    • $bitsAllClear
    • $bitsAllSet
    • $bitsAnyClear
    • $bitsAnySet.
  • Add $jsonSchema query operator.

4.3.0 / 2021-11-07

Features

  • Add $rand aggregation and query operator

Fixes

  • Support arbitrary input expressions for date operators
  • Use hash function for deep-equality check in union function

4.2.0 / 2021-09-26

  • Add array operators $first and $last.
  • Add date operators $dateAdd and $dateSubtract.

4.1.5 / 2021-09-22

  • Fix regex not supported in $all query operator. #190
  • Fix behaviour of $setUnion. #192

4.1.4 / 2021-08-06

  • Use context object in $filter.

4.1.3 / 2021-07-12

  • Add stronger type definitions for custom operators.
  • Convert unit tests to Typescript.
  • Update Typedocs.

4.1.2 / 2021-02-17

  • Fix $unwind incorrectly removing 0 value, by correcting behaviour of isEmpty

4.1.1 / 2021-01-31

  • Fix $elemMatch to support top-level boolean operators $and,$or, and $nor

4.1.0 / 2021-01-14

Features

  • Added trignometry operators.
    • $sin
    • $cos
    • $tan
    • $asin
    • $acos
    • $atan
    • $atan2
    • $asinh
    • $acosh
    • $atanh
    • $degreesToRadians
    • $radiansToDegrees

4.0.0 / 2021-01-07

Features

  • Added option hashFunction to enable custom hash functions
  • Added $unset pipeline operator
  • Added $isNumber expression operator
  • Added option collectionResolver to resolve collections from names for use in supported operators. Closes #150
  • Removed $where operator from default query operators included at load time. Closes #155 Fixes
  • Support object type names with integer characters Other
  • Improved type annotations
  • Added ES lint to ensure code quality
  • Added Prettier to maintain consistent code format

3.1.0 / 2020-10-23

  • Fix isObject to enforce plain Javascript objects.
  • Fix collation options of $sort operator
  • Merge Config into Options type
  • Pass Options to predicate function for comparison operators
  • Replace createConfig with makeOptions

3.0.6 / 2020-08-05

  • Fix $bucket default and boundaries mutation. Fixes #147
  • Handle empty array values to $not expression operator.

3.0.5 / 2020-07-20

  • Handle non-array values to $not expression operator. Fixes #146

3.0.4 / 2020-07-19

  • Deprecate mingo/init in favour of explicit mingo/init/basic.

3.0.3 / 2020-07-16

  • Remove esm module dependency. Fixes #145

3.0.2 / 2020-05-22

  • $map operator operand 'as', should default to this if missing. Fixes #143

3.0.1 / 2020-04-27

  • Throw exception for specifying unregistered operators
  • Fix regression bug in $elemMatch. Closes #139

3.0.0 / 2020-04-12

  • Convert project to Typescript
  • Build ES6 libraries with support for selective import
  • Default export only Aggregator, Query, aggregate(), find(), and remove()
  • Auto load only Query and Projection operators in main module via mingo/init
  • Provide module mingo/init/system to auto load all operators
  • Expose library via esm dependency to support module imports for ES5
  • Implement type operators $type, $convert, $toBool, $toDate, $toString, $toInt, $toLong, $toDouble, $toDecimal
  • Implement date operators $dateFromString, $dateFromParts, dateToParts.
  • Implement string operators $trim, $rtrim, $ltrim, $regexFind, $regexFindAll, $regexMatch
  • Add timezone support for all date operators
  • Return all date operator results in UTC
  • Split large expression operator groups to file per operator
  • Rename group module to accumulator
  • Removed dist/ files. Deferring to consumers to use their own packaging solutions
  • Removed setup() function. Replaced by passing in config to Query or Aggregator.
  • Removed VERSION fields
  • Removed _internal()
  • Pass only computeValue and resolve functions to custom operator
  • Deprecate and replace OP_XXX constants with enum OperatorType.XXX.
  • Removed CollectionMixin
  • Removed Lazy, Cursor, and addOperators from default export
  • Support extra options parameter on all operator functions

2.5.2 / 2020-03-17

  • Revert to using dist/mingo.js as main entry point for package. Fixes #125
  • Fix build failures from updated dependencies

2.5.1 / 2020-03-16

  • Create minified files for previous version
  • Refactored to support tree shaking

2.5.0 / 2020-03-08

  • Optionally add Symbol.iterator support if available in runtime environment. Closes #124
  • Allow matching with nested fields in $lookup. Fixes #123
  • Add $round operator and support 'place' argument for $trunc. Fixes #121
  • Support new array fields. Fixes #119
  • Handle embedded document exclusions

2.4.0 / 2019-10-25

  • Do not enforce single value for $facet aggregation pipeline operations. Fixes #110

2.3.6 / 2019-10-23

  • Add $set as $addFields alias. Fixes #113
  • Fix $group operator idempotency issue. #82 (#114)
  • Use renovateapp for dependency version management

2.3.5 / 2019-05-04

  • Correctly project and merge nested objects with missing keys.

2.3.4 / 2019-05-02

  • Properly flatten projected nested objects. Fixes #105

2.3.3 / 2019-03-20

  • Improve sort performance

2.3.2 / 2019-03-18

  • Fix sorting non-string values when collation is enabled.

2.3.1 / 2019-03-13

  • Correctly handle subqueries for $elemMatch. Fixes #103

2.3.0 / 2019-03-12

  • Add support for collation on Cursor objects. Fixes #100

2.2.12 / 2019-03-09

  • Avoid resolving primitive type operands.

2.2.11 / 2019-02-18

  • Work around iOS 9 Safari compatibility problem (#98)
  • Fixing typing for aggregator.run, make query optional. (#102)

2.2.10 / 2019-01-04

  • Minor cleanup and refactoring
  • Correct changelog date

2.2.9 / 2019-01-03

  • Switch inArray and notInArray to use Array.prototype.includes for performance. Fixes #95

2.2.8 / 2018-12-01

  • Project all matched elements of nested array correctly. Fixes #93

2.2.7 / 2018-11-30

  • Match missing fields correctly with $exists

2.2.6 / 2018-11-22

  • Update mergeObjects to handle more use cases.

2.2.5 / 2018-11-21

  • Fix merge objects to project subdocuments correctly. Fixes #91

2.2.4 / 2018-09-09

  • Add $$REMOVE support to conditionally exclude fields

2.2.3 / 2018-08-21

  • Match undefined fields with $in: [null] queries (#85)

2.2.2 / 2018-04-17

  • Support $unwind for arrays nested in objects. Fixes #80

2.2.1 / 2018-04-14

  • Added $expr operator. Fixes #79

2.2.0 / 2018-01-25

  • More Performance improvements for lazy evaluation
  • Added $mergeObjects operator
  • Change Lazy to factory
  • Remove Lazy static methods except isIterator

2.1.1 / 2017-12-18

  • Use iterator input for Query
  • Don't sort cursor modifiers

2.1.0 / 2017-12-17

  • Added new Lazy iterator to re-implement Cursor and pipeline operators
  • Added Aggregator.stream to obtain iterator for stream pipeline results
  • Removed Cursor methods first() and last()

2.0.5 / 2017-12-11

  • Add typescript declaration. Fixes #75

2.0.4 / 2017-10-19

  • Handle date values in $add operator. Fixes #73

2.0.3 / 2017-09-25

  • Fix map so it does not break cloneDeep
  • Improve hash function

2.0.2 / 2017-09-14

  • Remove array size constraint on $concatArrays. #64
  • Filter out empty values from collection. #65
  • Fix false positive tests and $substrBytes. #66
  • $regex should matched nested one level deep. #70

2.0.1 / 2017-09-07

  • Minimize cloning in pipeline operators
  • Return new object for $lookup without mutating original. Fixes #59 and #60
  • Make clone return shallow clone
  • Provide cloneDeep for deep cloning

2.0.0 / 2017-08-12

  • Removed custom polyfills
  • Added $strLenBytes, $strLenCP, $substrCP, $substrBytes
  • Fix $indexOfBytes
  • Fix $stdDevSamp
  • Fix $in for aggregation operations
  • Removed max and min cursor methods.
  • Restrict custom query operator type OP_QUERY to return boolean only
  • Rename OP_AGGREGATE to OP_EXPRESSION
  • Update $unwind to MongoDB 3.2 features

1.3.3 / 2017-08-02

  • Fix computeValue not overriding group operator keys after resolving expression
  • Added $in, $objectToArray, and $arrayToObject array aggregation operators

1.3.2 / 2017-07-28

1.3.1 / 2017-07-24

  • Replaced core-js because it bloats compiled library by 10K i.e. ~24%
  • Fix #55

1.3.0 / 2017-07-23

  • Support ES6 modules
  • Fix matching null and missing values. kofrasa#54
  • Improve comparing user-defined types

v1.2.0 / 2017-07-17

  • Fix $where operator not executed last. kofrasa#50
  • Fix matching nested arrays. kofrasa#51
  • Added $facet and $bucket operators
  • Added $bucketAuto operator without granularity support
  • Added string keys for $type operator
  • Added Cursor support for ES2015 Iterator Protocol
  • Sort null/undefined values to front of sorted result
  • Revert to operator names with format Mingo.OP_<name>

v1.1.2 / 2017-03-30

  • Optimize $lookup implementation
  • Avoid reversing original input to $reverseArray

v1.1.1 / 2017-03-12

  • Fix incorrect method call for ObjectProto
  • Limit exposed util methods to type checking

v1.1.0 / 2017-03-11

  • Renamed Mingo.OP_<name> functions to Mingo.KEY_<name>
  • Added pipeline stage operator ($lookup)

v1.0.1 / 2017-03-01

  • Updated polyfills to fix failing build on older node versions

v1.0.0 / 2017-02-28

  • Added array aggregation operators ($arrayElemAt,$concatArrays,$filter,$indexOfArray,$isArray,$range,$reverseArray,$reduce,$slice,$zip)
  • Added string aggregation operators ($indexOfBytes,$split)
  • Added arithmetic aggregation operators ($ceil,$exp,$floor,$ln,$log,$log10,$pow,$sqrt,$trunc)
  • Added .editorconfig
  • Pass utility functions to custom operator implementation
  • Rename function to retrieve collection id to idKey in custom operators
  • Moved support for query projection streaming to a new package mingo-stream

v0.9.1 / 2017-02-08

  • Fix resolving system variables with subpaths. See #41

v0.9.0 / 2017-02-06

  • Added support for system variables ($$ROOT,$$CURRENT)
  • Implemented more pipeline operators ($redact,$addFields,$sample,$sortByCount,$count,$replaceRoot)
  • Added $switch conditional operator
  • Fixed $ifNull conditional operator
  • Allow use of $in and $nin as aggregation comparison operators

v0.8.1 / 2016-12-08

  • Fix querying deeply nested nested arrays and object equality matching. See #36

v0.8.0 / 2016-09-26

  • Make this library zero-dependent

v0.7.0 / 2016-09-10

  • Fix nested projections for objects and arrays. See #25

v0.6.5 / 2016-07-04

  • Fix incorrect de-duping of Date types in $sort aggregate operator. See #23

v0.6.4 / 2016-05-19

  • Support matching against user-defined types. See #22

v0.6.3 / 2015-12-27

  • Fixed numeric aggregation over undefined values. See issues#21

v0.6.2 / 2015-11-17

  • Fixed erroneous cloning of objects. See #20

v0.6.1 / 2015-09-20

  • Fixed matching nested array fields without specifying index. See #19
  • Added VERSION global field

v0.6.0 / 2015-05-28

  • Added $dateToString aggregation operator

v0.5.0 / 2015-04-29

  • Added support for extending operators via Mingo.addOperators
  • Added bower.json
  • Fixed grouping documents by an object key
  • Fixed exclusive select projection not returning correct fields