TODO ==== Bson ---- + implement deprecated types (were left out) + convert from/to json + tie regex type to type in regex library + Read instance for Documents that can read its Show representation MongoDB ------- + When one connection in a pool fails, close all other since they will likely fail too + on insert/update: reject keys that start with "$" or "." + dereference dbref + functions for every command, eg. - findAndModify - reIndex (http://www.mongodb.org/display/DOCS/Indexes#Indexes-ReIndex) - createIndex attributes: background, min, max - createIndex Order [Asc, Dec, Geo2d] - getIndexInfo - logout - collectionsInfo - databasesInfo - getProfileInfo + Query attribute: timeout + Update If Current (http://www.mongodb.org/display/DOCS/Atomic+Operations) + Upon client exit, send killCursors for all open cursors, otherwise server will keep them open for 10 minutes and keep NoCursorTimeout cursors open for hours. + Upon cursor finalize (garbage collect) send killCursor even if you have to create a new connection, because server keeps cursors open for 10 minutes (or more). + Query option Exhaust + Reconnect on replica set primary stepdown, so no exception raised to user + Reconnect on query ioerror re-query, so no exception raised to user. Can't be done for writes because it is not safe to re-execute a write. + tailable cursor support - only close cursor when cursorID is 0 - have to create loop that sleeps and retries - lazy list support + GridFS Tests - none currently Misc ---- + javascript DSL Questions: - In Mongo shell, db.foo.totalSize fetches storageSize of each index but does not use it Notes: - Remember that in the new version of MongoDB (>= 1.6), "ok" field can be a number (0 or 1) or boolean (False or True). Use 'true1' function defined in Database.MongoDB.Util - A cursor will die on the server if not accessed (by any connection) within past 10 minutes (unless NoCursorTimeout option set). Accessing a dead (or non-existent) cursor raises a CursorNotFoundFailure.