Boolean Operators
When a field property is a boolean data type, use explicit true-false values.Enclose groups of logical operations with parentheses to ensure Ditto interprets your desired logic correctly.
"isDeleted"
boolean property set to "true"
:
Query
"isDeleted"
boolean property set to "false"
:
Query
Equal (==) and Inequality (!=) Operators
To find documents that match a given key-value pair, use the equal operator. Where you specify the key and the number or string value you want to match separated by==
.
For example, to find documents that have a title equal to "Harry Potter"
:
Query
!=
.
For example, to find documents that are not of the title “Lord of the Rings”:
Query
Comparison Operators: (>=)(>)(<=)(<)
Compare values in documents, set conditions, retrieve specific documents that meet your criteria, and make logical evaluations using the following operators in your query statements.Ditto supports parsing ISO-8601 date strings, so you can use ISO-8601 formatted date strings in queries for comparison operations. For more information, see Using ISO-8601 for Date Strings.
age
field property is less than or equal to the value of 18
:
Query
age
field property is less than the value of 18
:
Query
age
field property is greater than or equal to the value of 18
:
Query
age
field property is greater than the value of 18
:
Query
Compound Operators
Perform complex operations in a single executable by using compound operators. A compound operator* *is a combination of two or more operators in a single executable:SQL | Ditto |
---|---|
AND | && |
OR | || |
NOT | ! |
contains( ) | contains( ) |
Logical AND Predicate Statements: (&&)
Similar to SQLAND
statements, use &&
for a condition that evaluates to true only when all of its conditions are set to true
.
For example, to find documents that have a theme
field property equal to "Dark"
and a name field property equal to "Light"
:
Query
Logical OR Statements: (||)
Similar to SQLOR
statements, use ||
for a logical or predicate statement.
For example, to find documents that are "Tom"
or "Arthur"
:
Query
Logical NOT Statements: (!)
Similar to SQLNOT
statements, use !
for logical not predicate statements:
For example, find documents that are neither “Hamilton” nor “Morten”:
String Operations
Usestarts_with(property, test)
to test if a field property with a string value starts with a test string.
For example, to find documents with a title
field property that begins with "Lord"
:
Query
ends_with(property, test)
to test if a field property with a string value ends with a test string.
For example, to find documents with a title
field property that ends with "Rings"
:
Query
regex(property, test)
to see if a field property with a string value passes a regular expression. For more information, see the official Mozilla Developer Network Docs (MDN) > Regular Expressions.
For example, to find documents containing only upper and lowercase letters, numbers, and underscores:
Query
NULL Values
Usenull
to check for the existence of a value of a given field.
For example, to find documents with a color
field property that has no value:
Query
Array Operators
When handling collections of data that different peers may make concurrent updates to, first consider using an embeddedmap
structure. If necessary, use an array
.
The array
type in Ditto is a CRDT and behaves differently than the primitive array
type. For more information, see the Platform Manual Data Types.
Avoid using
arrays
in Ditto.Due to potential merge conflicts when offline peers reconnect to the mesh and attempt to sync their updates, especially when multiple peers make concurrent updates to the same item within the array
.Operator | Operation |
---|---|
contains(array, value) | Checks for value in the array |
Query
Date and Time Formats
When parsing date and time strings, use the ISO-8601 standard format, as follows. For more information, see Platform Manual Using ISO-8601 for Date Strings.Query
Field Path Navigation
If fields consist of alphanumeric characters or include underscores, use the following bracket notation to navigate document properties:Query
Valid Path Definitions
a[0][1]["_123"]
a["0"]["1"]
[”a”][”0”][”1”]
Invalid Path Definitions
$foo
($ isn’t a valid character anywhere in the unquoted string)a[1st]
(1st isn’t a valid unquoted string for field access, as the first character is a number)b[2nd]
(same reason as above)b[$foo]
($ isn’t a valid character anywhere in the unquoted string)b[foo$]
(same reason as above)a["foo"]b
(missing [""] around b)["$foo"]
a["1st"]
b["2nd"]
b["$foo"]
b["foo$"]
b["foo"]["b"]