YearExpression.js 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. "use strict";
  2. /**
  3. * A $year pipeline expression.
  4. * @see evaluateInternal
  5. * @class YearExpression
  6. * @namespace mungedb-aggregate.pipeline.expressions
  7. * @module mungedb-aggregate
  8. * @constructor
  9. **/
  10. var YearExpression = module.exports = function YearExpression() {
  11. base.call(this);
  12. }, klass = YearExpression, base = require("./FixedArityExpressionT")(klass, 1), proto = klass.prototype = Object.create(base.prototype, {constructor: {value: klass}});
  13. // DEPENDENCIES
  14. var Value = require("../Value"),
  15. Expression = require("./Expression");
  16. // STATIC METHODS
  17. klass.extract = function extract(date) {
  18. return date.getUTCFullYear();
  19. };
  20. klass.opName = "$year";
  21. // PROTOTYPE MEMBERS
  22. proto.getOpName = function getOpName() {
  23. return klass.opName;
  24. };
  25. /**
  26. * Takes a date and returns the full year.
  27. * @method evaluateInternal
  28. **/
  29. proto.evaluateInternal = function evaluateInternal(vars) {
  30. var date = this.operands[0].evaluateInternal(vars);
  31. return klass.extract(date);
  32. };
  33. /** Register Expression */
  34. Expression.registerExpression(klass.opName, base.parse);