MinuteExpression.js 1.0 KB

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