Constructor for constructing query as object from
understandable arguments with condition support.
Query object do not call database.
Query object can be converting to Map via toMap() method
and used as argument to query() method
of database client for sending.
For debug purpose query object can be printed as String,
because it has toString() method.