-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Implement string expressions #1036
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
5676fad
to
5093ef5
Compare
driver-core/src/main/com/mongodb/client/model/expressions/StringExpression.java
Outdated
Show resolved
Hide resolved
driver-core/src/main/com/mongodb/client/model/expressions/Expressions.java
Outdated
Show resolved
Hide resolved
driver-core/src/main/com/mongodb/client/model/expressions/StringExpression.java
Outdated
Show resolved
Hide resolved
driver-core/src/main/com/mongodb/client/model/expressions/MqlExpression.java
Show resolved
Hide resolved
...rc/test/functional/com/mongodb/client/model/expressions/StringExpressionsFunctionalTest.java
Outdated
Show resolved
Hide resolved
...rc/test/functional/com/mongodb/client/model/expressions/StringExpressionsFunctionalTest.java
Outdated
Show resolved
Hide resolved
...rc/test/functional/com/mongodb/client/model/expressions/StringExpressionsFunctionalTest.java
Outdated
Show resolved
Hide resolved
...rc/test/functional/com/mongodb/client/model/expressions/StringExpressionsFunctionalTest.java
Outdated
Show resolved
Hide resolved
...rc/test/functional/com/mongodb/client/model/expressions/StringExpressionsFunctionalTest.java
Outdated
Show resolved
Hide resolved
e4a6e00
to
5f07226
Compare
5093ef5
to
1a776bf
Compare
driver-core/src/main/com/mongodb/client/model/expressions/Expressions.java
Show resolved
Hide resolved
...rc/test/functional/com/mongodb/client/model/expressions/StringExpressionsFunctionalTest.java
Outdated
Show resolved
Hide resolved
1a776bf
to
d3a93e0
Compare
|
||
StringExpression toUpper(); | ||
|
||
StringExpression concat(StringExpression concat); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This appends the string to the current string. Should we have a prepend method? If so, should this method be renamed?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When a question is posed this way, it forces others to think about it from scratch, then describe pros/cons, potential usages, and suggest a decision. I think that all of this work should be done by the one who asks the question so that others could analyze the proposed options and express their opinion.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here is an example where prepend (first line) is much easier to naturally write, compared to the equivalent append:
[a, b, c, d].map(v -> v.toString().trim().first(3).prepend(">"))
[a, b, c, d].map(v -> of(">").append(v.toString().trim().first(3)))
We discussed this and are leaning towards using prepend/append here, though the reductive operation would be concat (see #1032 (comment) ). Additional input welcome.
* Implement boolean expressions (#1025) JAVA-4779 * Implement filter, map, reduce (#1031) JAVA-4781 * Implement eq, ne, gt, gte, lt, lte (#1033) JAVA-4784 * Implement string expressions (#1036) JAVA-4801 * Implement arithmetic expressions (#1037) Implement arithmetic expressions (from top 50, and others) JAVA-4803 * Implement array expressions (#1043) JAVA-4805 * Implement date expressions (#1045) JAVA-4804 * Implement conversion/type expressions (#1050) JAVA-4802 * Implement document expressions (#1052) JAVA-4782 * Replace reduce with individual reductions (#1053) JAVA-4814 * Implement map expressions (#1054) JAVA-4817 * Implement switch expression (#1055) JAVA-4813 * Test expressions in context (#1057) JAVA-4820 * Add javadoc for boolean, date, number, integer, and expression (#1059) JAVA-4799 * Update and add documentation (#1059) * Fix, tests JAVA-4799 * Add `@MqlUnchecked` and a few usage examples (#1059) JAVA-4799 * Add has to document, add tests (#1070) JAVA-4799 * Add javadocs for remaining classes (#1070) JAVA-4799 * 5.2 annotations (#1070) JAVA-4799 * 5.0 annotations (#1070) JAVA-4799 * 4.4 annotations (#1070) JAVA-4799 * 4.2 annotations (#1070) JAVA-4799 * 4.0 annotations (#1070) JAVA-4799 * Update and add documentation, add tests, fix minor issues (#1070) Rename extractBsonValue Fix access modifiers Remove excess comments Update docs Fix: behaviour of get Add notNull to API, add notNullApi test Fix docs/annotations, tests Fix docs, annotations, since Fix docs Revert external Add missing MqlUnchecked Fix missing null checks Checkstyle JAVA-4799 * Rename to Mql (automated) (#1073) JAVA-3879 * Rename methods (automated) (#1073) JAVA-3879 * Update naming, terms, and missing checks and annotations (#1073) JAVA-3879 --------- Co-authored-by: Valentin Kovalenko <[email protected]>
JAVA-4801
Implements string expressions from the top 50, and a few others.
See: https://www.mongodb.com/docs/manual/reference/operator/aggregation/#string-expression-operators