Skip to content

Commit

Permalink
docs(mango): match description of $mod with reality
Browse files Browse the repository at this point in the history
The remainder argument for the `$mod` operator can be zero, while
its documentation suggests otherwise.  It actually covers a very
realistic use case where divisibility is expressed.

Neither related restrictions could be identified in the sources
[1] nor MongoDB forbids this [2].  Tests also seem to exercise this
specific case [3].  Thanks @iilyak for checking on these.

[1] https://github.com/apache/couchdb/blob/adf17140e81d0b74f2b2ecdea48fc4f702832eaf/src/mango/src/mango_selector.erl#L512:L513
[2] https://www.mongodb.com/docs/manual/reference/operator/query/mod/
[3] https://github.com/apache/couchdb/blob/0059b8f90e58e10b199a4b768a06a762d12a30d3/src/mango/test/03-operator-test.py#L58
  • Loading branch information
pgj authored and nickva committed Jan 19, 2023
1 parent 24a56d4 commit 74606ff
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 3 deletions.
4 changes: 2 additions & 2 deletions src/docs/src/api/database/find.rst
Original file line number Diff line number Diff line change
Expand Up @@ -705,8 +705,8 @@ operators require the argument to be in a specific JSON format.
| | | | document. Non-array fields cannot |
| | | | match this condition. |
+---------------+-------------+------------+-----------------------------------+
| Miscellaneous | ``$mod`` | [Divisor, | Divisor and Remainder are both |
| | | Remainder] | positive or negative integers. |
| Miscellaneous | ``$mod`` | [Divisor, | Divisor is a non-zero integer, |
| | | Remainder] | Remainder is any integer. |
| | | | Non-integer values result in a |
| | | | 404. Matches documents where |
| | | | ``field % Divisor == Remainder`` |
Expand Down
2 changes: 1 addition & 1 deletion src/mango/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -302,7 +302,7 @@ Array related operators

Misc related operators

* "$mod" - [Divisor, Remainder], where Divisor and Remainder are both positive integers (ie, greater than 0). Matches documents where (field % Divisor == Remainder) is true. This is false for any non-integer field
* "$mod" - [Divisor, Remainder], where Divisor is a non-zero integer and Remainder is any integer. Matches documents where (field % Divisor == Remainder) is true. This is false for any non-integer field
* "$regex" - string, a regular expression pattern to match against the document field. Only matches when the field is a string value and matches the supplied matches


Expand Down

0 comments on commit 74606ff

Please sign in to comment.