summaryrefslogtreecommitdiff
path: root/src/mongo/db/pipeline/expression.h
diff options
context:
space:
mode:
authorPatrick Meredith <pmeredit@gmail.com>2018-10-22 17:01:46 -0400
committerCharlie Swanson <charlie.swanson@mongodb.com>2019-02-14 17:54:56 -0500
commit814b1f8237db9ecb27dd0ffa96f11edd58bac73e (patch)
tree4e13cadda4f9dc3ea4f4d7156476f31c77ba9726 /src/mongo/db/pipeline/expression.h
parentf1da8170c1c568762b29e44910afbcc6f01a644f (diff)
downloadmongo-814b1f8237db9ecb27dd0ffa96f11edd58bac73e.tar.gz
SERVER-15926: Implement $round function and allow a precision argument for $trunc
Closes #1297 Signed-off-by: Charlie Swanson <charlie.swanson@mongodb.com>
Diffstat (limited to 'src/mongo/db/pipeline/expression.h')
-rw-r--r--src/mongo/db/pipeline/expression.h14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/mongo/db/pipeline/expression.h b/src/mongo/db/pipeline/expression.h
index 33e2781c296..5b79fafe1ad 100644
--- a/src/mongo/db/pipeline/expression.h
+++ b/src/mongo/db/pipeline/expression.h
@@ -1755,6 +1755,14 @@ public:
const char* getOpName() const final;
};
+class ExpressionRound final : public ExpressionRangedArity<ExpressionRound, 1, 2> {
+public:
+ explicit ExpressionRound(const boost::intrusive_ptr<ExpressionContext>& expCtx)
+ : ExpressionRangedArity<ExpressionRound, 1, 2>(expCtx) {}
+
+ Value evaluate(const Document& root) const final;
+ const char* getOpName() const final;
+};
class ExpressionSplit final : public ExpressionFixedArity<ExpressionSplit, 2> {
public:
@@ -1949,12 +1957,12 @@ private:
};
-class ExpressionTrunc final : public ExpressionSingleNumericArg<ExpressionTrunc> {
+class ExpressionTrunc final : public ExpressionRangedArity<ExpressionTrunc, 1, 2> {
public:
explicit ExpressionTrunc(const boost::intrusive_ptr<ExpressionContext>& expCtx)
- : ExpressionSingleNumericArg<ExpressionTrunc>(expCtx) {}
+ : ExpressionRangedArity<ExpressionTrunc, 1, 2>(expCtx) {}
- Value evaluateNumericArg(const Value& numericArg) const final;
+ Value evaluate(const Document& root) const final;
const char* getOpName() const final;
};