org.ejdb.driver
Class EJDBQueryBuilder

java.lang.Object
  extended by org.ejdb.driver.EJDBQueryBuilder

public class EJDBQueryBuilder
extends java.lang.Object

Query/BSON builder is used to create EJDB queries. EJDBQueryBuilder can be used to construct BSON objects as well as queries.

Version:
$Id$
Author:
Tyutyunkov Vyacheslav (tve@softmotions.com)

Nested Class Summary
 class EJDBQueryBuilder.Constraint
          Find constraint for specified field
 class EJDBQueryBuilder.OrderBy
          Sorting rules for query results
 
Constructor Summary
  EJDBQueryBuilder()
           
  EJDBQueryBuilder(BSONObject query, java.util.List<BSONObject> queryOrs, BSONObject hints)
           
protected EJDBQueryBuilder(EJDBQueryBuilder parent, BSONObject query)
           
 
Method Summary
protected  EJDBQueryBuilder addHint(java.lang.String name, java.lang.Object value)
          Adds pair name->value to hints BSON object.
protected  EJDBQueryBuilder addOperation(java.lang.String field, java.lang.Object value, boolean replace)
          Adds query restrintions in main query object.
protected  void addToBSON(BSONObject out, java.lang.String field, java.lang.Object value)
           
 EJDBQueryBuilder addToSet(java.lang.String field, java.lang.Object value)
          Atomically adds value to the array field only if value not in the array already.
 EJDBQueryBuilder addToSetAll(java.lang.String field, java.util.Collection<java.lang.Object> values)
          Atomically performs set union with values in val for specified array field.
 EJDBQueryBuilder addToSetAll(java.lang.String field, java.lang.Object... values)
          Atomically performs set union with values in val for specified array field.
protected  void checkHintsAvailable()
          Checks hints section allowed.
 EJDBQueryBuilder dropAll()
          In-place record removal operation.
 EJDBQueryBuilder elementMatch(java.lang.String field)
          Element match construction
 EJDBQueryBuilder excludeField(java.lang.String field)
          Sets fields to be excluded from resulting objects.
 EJDBQueryBuilder.Constraint field(java.lang.String field)
          Adds constraint for field
 EJDBQueryBuilder field(java.lang.String field, java.lang.Object value)
          Adds field equality restriction.
 BSONObject getMainQuery()
          Returns main BSON query object
 BSONObject[] getOrQueries()
          Returns BSON objects for additional OR queries
 BSONObject getQueryHints()
          Returns BSON hints object
 EJDBQueryBuilder inc(java.lang.String field, java.lang.Number inc)
          Increment specified field.
 EJDBQueryBuilder includeField(java.lang.String field)
          Sets fields to be included in resulting objects.
 EJDBQueryBuilder join(java.lang.String fpath, java.lang.String collname)
          Make collection join for select queries.
 EJDBQueryBuilder or()
          Add OR joined query restrictions.
 EJDBQueryBuilder.OrderBy orderBy()
          Resturs return sorting rules control object
 EJDBQueryBuilder pull(java.lang.String field, java.lang.Object value)
          Atomically removes all occurrences of value from field, if field is an array.
 EJDBQueryBuilder pullAll(java.lang.String field, java.util.Collection<java.lang.Object> values)
          Atomically performs set substraction of values for specified array field.
 EJDBQueryBuilder pullAll(java.lang.String field, java.lang.Object... values)
          Atomically performs set substraction of values for specified array field.
 EJDBQueryBuilder set(java.lang.String field, java.lang.Object value)
          Set specified fiels to value

query.set(field1, value1).set(field2, value2); // -> { ..., $set : {field1 : value1, field2 : value2}}

 EJDBQueryBuilder setFieldIncluded(java.lang.String field, boolean incldue)
          Sets fields to be included or exluded in resulting objects.
 EJDBQueryBuilder setMaxResults(int maxResults)
          Sets max number of records in the result set.
 EJDBQueryBuilder setOffset(int offset)
          Sets number of skipped records in the result set.
 EJDBQueryBuilder upsert(java.lang.String field, java.lang.Object value)
          Atomic upsert.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

EJDBQueryBuilder

public EJDBQueryBuilder()

EJDBQueryBuilder

public EJDBQueryBuilder(BSONObject query,
                        java.util.List<BSONObject> queryOrs,
                        BSONObject hints)

EJDBQueryBuilder

protected EJDBQueryBuilder(EJDBQueryBuilder parent,
                           BSONObject query)
Method Detail

getMainQuery

public BSONObject getMainQuery()
Returns main BSON query object

Returns:
main BSON query object

getOrQueries

public BSONObject[] getOrQueries()
Returns BSON objects for additional OR queries

Returns:
BSON objects for additional OR queries

getQueryHints

public BSONObject getQueryHints()
Returns BSON hints object

Returns:
BSON hints object

addOperation

protected EJDBQueryBuilder addOperation(java.lang.String field,
                                        java.lang.Object value,
                                        boolean replace)
Adds query restrintions in main query object.

Parameters:
field - field path
value - field value
replace - if true all other restrictions will be replaces, otherwise trying to add restrictions for field

addToBSON

protected void addToBSON(BSONObject out,
                         java.lang.String field,
                         java.lang.Object value)

checkHintsAvailable

protected void checkHintsAvailable()
                            throws EJDBException
Checks hints section allowed.

Throws:
EJDBException - if hints section if not allowed for current EJDBQueryBuilder object

addHint

protected EJDBQueryBuilder addHint(java.lang.String name,
                                   java.lang.Object value)
                            throws EJDBException
Adds pair name->value to hints BSON object.

Throws:
EJDBException - if hints section if not allowed for current EJDBQueryBuilder object

field

public EJDBQueryBuilder field(java.lang.String field,
                              java.lang.Object value)
Adds field equality restriction.

query.field(field, value); // -> {field : value}


field

public EJDBQueryBuilder.Constraint field(java.lang.String field)
Adds constraint for field


elementMatch

public EJDBQueryBuilder elementMatch(java.lang.String field)
Element match construction. - $elemMatch The $elemMatch operator matches more than one component within an array element. - { array: { $elemMatch: { value1 : 1, value2 : { $gt: 1 } } } }

Restriction: only one $elemMatch allowed in context of one array field.


or

public EJDBQueryBuilder or()
                    throws EJDBException
Add OR joined query restrictions.

Throws:
EJDBException - if or section if not allowed for current EJDBQueryBuilder object (in ElementMatch-query, for example)

set

public EJDBQueryBuilder set(java.lang.String field,
                            java.lang.Object value)
Set specified fiels to value

query.set(field1, value1).set(field2, value2); // -> { ..., $set : {field1 : value1, field2 : value2}}


upsert

public EJDBQueryBuilder upsert(java.lang.String field,
                               java.lang.Object value)
Atomic upsert. If matching records are found it will be $set operation, otherwise new record will be inserted with field specified by value.

query.field(field, value).upsert(field, value); // -> {field : value, $upsert : {field : value}}


inc

public EJDBQueryBuilder inc(java.lang.String field,
                            java.lang.Number inc)
Increment specified field. Only number types are supported.

query.int(field1, value1).int(field2, value2); // -> { ..., $int : {field1 : value1, field2 : value2}}


dropAll

public EJDBQueryBuilder dropAll()
In-place record removal operation.

Example: Next update query removes all records with name eq 'andy': query.field("name", "andy").dropAll()


addToSet

public EJDBQueryBuilder addToSet(java.lang.String field,
                                 java.lang.Object value)
Atomically adds value to the array field only if value not in the array already. If containing array is missing it will be created.


addToSetAll

public EJDBQueryBuilder addToSetAll(java.lang.String field,
                                    java.lang.Object... values)
Atomically performs set union with values in val for specified array field.


addToSetAll

public EJDBQueryBuilder addToSetAll(java.lang.String field,
                                    java.util.Collection<java.lang.Object> values)
Atomically performs set union with values in val for specified array field.


pull

public EJDBQueryBuilder pull(java.lang.String field,
                             java.lang.Object value)
Atomically removes all occurrences of value from field, if field is an array.


pullAll

public EJDBQueryBuilder pullAll(java.lang.String field,
                                java.lang.Object... values)
Atomically performs set substraction of values for specified array field.


pullAll

public EJDBQueryBuilder pullAll(java.lang.String field,
                                java.util.Collection<java.lang.Object> values)
Atomically performs set substraction of values for specified array field.


join

public EJDBQueryBuilder join(java.lang.String fpath,
                             java.lang.String collname)
Make collection join for select queries.


setMaxResults

public EJDBQueryBuilder setMaxResults(int maxResults)
Sets max number of records in the result set.


setOffset

public EJDBQueryBuilder setOffset(int offset)
Sets number of skipped records in the result set.


setFieldIncluded

public EJDBQueryBuilder setFieldIncluded(java.lang.String field,
                                         boolean incldue)
Sets fields to be included or exluded in resulting objects. If field presented in $orderby clause it will be forced to include in resulting records.


includeField

public EJDBQueryBuilder includeField(java.lang.String field)
Sets fields to be included in resulting objects. If field presented in $orderby clause it will be forced to include in resulting records.


excludeField

public EJDBQueryBuilder excludeField(java.lang.String field)
Sets fields to be excluded from resulting objects. If field presented in $orderby clause it will be forced to include in resulting records.


orderBy

public EJDBQueryBuilder.OrderBy orderBy()
Resturs return sorting rules control object