- bumped default lift version to 2.6-final
- dropped support for scala-2.9.x
- bumped scala-2.10 and 2.11 minor versions to latest
- mongo-java-driver 2.12.5
- REPL-friendly rendering of ObjectIds in .toString
- support for $ projection operator (as $$)
- support for ReadPreference on count()
- scala 2.11 support
- $setOnInsert support (thanks Konrad!)
- support for eqs on list fields
- support for $push: { $each: [...], $slice: }
- joda.DateTime is a BSONType
- string subtypes are BSONTypes
- support for $not operator expression modifiers
- ObjectIdKey trait to replace deprecated ObjectId
- overload inc method to take a Double (jdonmez)
- fixed edge case rendering $or queries (thanks Konrad!)
- support for user defined setFromAny in fields with BsonRecordField and iteratees (thanks Arseny!)
- $elemMatch support
- simplified pullObjectWhere notation
- $nearSphere support
- support for $ in .select() statements
- better support for comparing DateFields against Dates and DateTimes
- StringQueryField support for subtypes of String
- split off index code into rogue-index
- long subtypes are BSONTypes
- add BSONType type class to eliminate runtime serialization errors
- support for type-safe ID fields
- support for scala 2.9.2 and 2.10.0 (mattpap)
- support for Model.distinct(_.field) (mattpap)
- sbt 0.12.0 (mattpap)
- fix signatures for $or queries
- hook up readPreference, remove notion of defaultReadPreference
- fixed bug in $or clause serialization
- support for DateTime fields
- defaultReadPreference should be 'secondary'
- setTo overload takes an Option (setTo None == unset)
- fixed some implicit conversions
- $slice support
- list neqs
- updated Indexing.md
- allow Date and List fields to act like any other field (eqs, etc)
- Index checker: don't validate indexes if there are no indexes
- report cluster name to QueryLogger
- fixed bug around count() respecting skip and limit
- added QueryLogger.onExecuteQuery callback
- Move index classes to com.foursquare.rogue.index
- Add SeqQueryField and SeqModifyField
- Replace Box with Option in rogue-core
- Make ObjectIdQueryField more generic
- revert change where we always pass a negative limit
- fix weird interaction between negative limits and batchSize
- simplified phantom types
- use size() instead of count() to respect skip and limit
- shardkey awareness
- lots of renames, most notably AbstractQuery and ModifyQuery => Query
- pass a negative number to DBCursor.limit() so that the cursor closes
- Internal: Use standard Either convention of failure on the Left.
- Use readPreference instead of slaveOk
- Remove generic Field[V, M] => QueryField[V, M] implicit
- split off com.foursquare.field into a standalone project
- upgrade to v0.6 of gpg plugin
- make QueryExecutor a trait
- rename SelectField#apply so implicits to SelectField don't cause trouble
- fix O(N^2) bug in fetchBatch and iterateBatch
- total refactor
- separate query building from query execution
- break out lift support into rogue-lift
- core of rogue now in rogue-core, agnostic to model representation
- drop support for scala 2.8.x
- iteratee support
- default WriteConcern is configurable
- renamed blockingBulkDelete_!! to bulkDelete_!! (takes a WriteConcern)
- moved gt, lt into base QueryField (nsanch)
- fixed the way nested subfield queries work if both fields are ListFields
- fixed handling of subfields of list fields
- allow nested subfields for BsonRecordFields
- removed EmptyQuery, fixed handling of upserts on empty queries
- BaseQuery.asDBObject, BaseModifyQuery.asDBObject
- fix for subselecting when the top-level field doesn't exist (nsanch)
- fixes for publishing to sonatype
- bumped mongo java driver version to 2.7.3
- fixed bug where findAndModify upsert with returnNew = false was returning Some
- fixed bug where $regex query on a field would not allow other queries on that field
- publishing to sonatype instead of scala-tools
- allow $or queries in modify commands
- select/selectCase up to 10 fields (davidtaylor)
- only validate lists on $all and $in queries (jliszka)
- pass query object to logging hook (jliszka)
- compile-time index checking (nsanch)
- stop building select clause from all fields (jliszka)
- QueryLogger.logIndexHit hook (jliszka)
- use distinct values in $in and $all queries (jliszka)
- slaveOk query modifier (nsanch)
- updated inline documentation (markcc)
- between takes a tuple (davidt)
- end-to-end tests (nsanch)
- subfield select on embedded list (nsanch)
- regex match operator for string fields (jliszka)
- Support for the $ positional operator
- pullWhere - $pull by query instead of exact match
- Mongo index checking (see here for documentation)
- $rename support
- ability to supply a WriteConcern to updateOne, updateMulti and upsertOne.
- select and selectCase can handle 7 and 8 parameters
- $bit support
- Add hook for intercepting and transforming queries right before sending request to mongodb.
- improved support for subfield queries on BsonRecordField
- support for subfield queries on BsonRecordField
- added "matches" operator (for regexes) on StringFields with explicit index behavior expectations
- fixed some more broken logging
- sbt 0.10.0
- raw access do BasicDBObjectBuilder in query builder
- fixed some broken logging
- whereOpt support: Venue.whereOpt(uidOpt)(_.userid eqs _)
- Pass the query signature to the logging hook
- findAndModify support
- $or query support
- efficient .exists query method (thanks Jorge!)
- support for BsonRecordField and BsonRecordListField (thanks Marc!)
- type-safe foreign key condtions, e.g., Tip.where(_.venueid eqs venueObj) (thanks dtaylor!)
- blockingBulkDelete_!! which takes a WriteConcern
- more uniform query logging
- skipOpt query modifier
- use built-in interpreter for type checking tests
- .toString produces runnable javascript commands for mongodb console
- added tests for constructions that should not compile
- selectCase() builder method for select()ing via case class
- support for $nin (nin) and $ne (notcontains) on list fields
- unchecked warnings cleanup
- index hinting support
- support for selecting subfields (MongoMapField and MongoCaseClassField only; no support for MongoCaseClassListField)
- "between" convenience operator (numeric)
- scala 2.9.0 and 2.9.0-1 build support -- thanks eltimn!
- fixed ObjectId construction for date ranges by zeroing out machine, pid and counter fields
- support for $maxScan and $comment addSpecial parameters on find() queries
- always specify field names to return in the query; if select() was not specified, use all field names from the model
- some code cleanup (use case classes and copy() to save some typing)
- explain() method on BaseQuery (thanks tjulien!)
- support for select()ing up to 6 fields
- regression fix for 1.0.9
- added hooks for full query validation
- support for $type and $mod query operators
- query signatures: string version of a query without values
- support for indicating when a query clause is intended to hit an index (for runtime index checking, if you wish to implement it)
- extra logging around mongo exceptions
- support for empty (noop) modify queries
- fetchBatch now uses db cursors
- building against Lift snapshot (thanks Indrajit!)
- support for crossbuilding 2.8.0 & 2.8.1
- added tiny bit more type safety to unsafeField subfield selector
- bug fix: alwasy set _id in select() queries
- fixed setTo serialization
- eqs/neqs support for GeoQueryField
- support for querying sub-fields of a map
- added BasePaginatedQuery.setCountPerPage()