Query Constraints
When building queries, Neboa provides you with many different constraints to filter documents.
These constraints are chainable and can be used to build complex queries.
Here we will go over all the constraints available to you and how to use them.
equalTo
The equalTo
constraint allows you to filter documents by a specific value in a field.
const query = Users.query()
.equalTo('name', 'John Doe')
.equalTo('age', 42)
Array values
When using the equalTo
constraint on an array field, it will check if the array contains the value.
const query = Users.query()
.equalTo('tags', 'foo')
notEqualTo
The notEqualTo
constraint allows you to filter documents by a value that is not equal to a specific value in a field.
const query = Users.query()
.notEqualTo('name', 'John Doe')
.notEqualTo('age', 42)
Array values
When using the notEqualTo
constraint on an array field, it will check if the array does not contain the value.
const query = Users.query()
.notEqualTo('tags', 'foo')
greaterThan
The greaterThan
constraint allows you to filter documents by a value that is greater than a specific value in a field.
const query = Users.query()
.greaterThan('age', 42)
greaterThanOrEqualTo
The greaterThanOrEqualTo
constraint allows you to filter documents by a value that is greater than or equal to a specific value in a field.
const query = Users.query()
.greaterThanOrEqualTo('age', 42)
lessThan
The lessThan
constraint allows you to filter documents by a value that is less than a specific value in a field.
const query = Users.query()
.lessThan('age', 42)
lessThanOrEqualTo
The lessThanOrEqualTo
constraint allows you to filter documents by a value that is less than or equal to a specific value in a field.
const query = Users.query()
.lessThanOrEqualTo('age', 42)
containedIn
The containedIn
constraint is very similar to the equalTo
constraint, but it allows you to filter documents by a value that is contained in an array field.
const query = Users.query()
.containedIn('tags', ['foo', 'bar'])
notContainedIn
The notContainedIn
constraint is very similar to the notEqualTo
constraint, but it allows you to filter documents by a value that is not contained in an array field.
const query = Users.query()
.notContainedIn('tags', ['foo', 'bar'])
exists
The exists
constraint allows you to filter documents by a field that exists or does not exist.
const query = Users.query()
.exists('name')
notExists
The notExists
constraint allows you to filter documents by a field that does not exist or exists.
const query = Users.query()
.notExists('name')
matches
The matches
constraint allows you to filter documents by a field that matches a regular expression.
const query = Users.query()
.matches('name', /^John/)
doesNotMatch
The doesNotMatch
constraint allows you to filter documents by a field that does not match a regular expression.
const query = Users.query()
.doesNotMatch('name', /^John/)
like
SQLite does not have a built-in full-text search feature, but Neboa can use LIKE operator to provide a basic search capability.
const query = Users.query()
.like('name', 'John') // LIKE '%John%'
limit
The limit
constraint allows you to limit the number of documents returned by the query.
const query = Users.query()
.limit(10)
skip
The skip
constraint allows you to skip a number of documents returned by the query.
const query = Users.query()
.skip(10)
ascending
The ascending
constraint allows you to sort documents in ascending order by a field.
const query = Users.query()
.ascending('name')
descending
The descending
constraint allows you to sort documents in descending order by a field.
const query = Users.query()
.descending('name')
and
The and
constraint allows you to combine multiple constraints together.
const query1 = Users.query()
.equalTo('name', 'John Doe')
.equalTo('age', 42)
const query2 = Users.query()
.greaterThan('score', 100)
.and(query1) // (score > 100) AND (name = 'John Doe' AND age = 42)
or
The or
constraint allows you to combine multiple constraints together.
const query1 = Users.query()
.equalTo('name', 'John Doe')
.equalTo('age', 42)
const query2 = Users.query()
.greaterThan('score', 100)
.or(query1) // (score > 100) OR (name = 'John Doe' AND age = 42)
lookup
The lookup
constraint allows you to lookup documents in another collection.
const query = Users.query()
.lookup({...})
The lookup method is used for relational data and more complex than the others, therefore it has its own section here.