TODO ==== BSON ---- + on insert/update: reject keys that start with "$" or "." + data support for common mongo "$symbols" + convert from/to json + tie in with native regex like python does? - on outgoing uncompile? - on incoming automatically compile + more time convertibles + map operations for BsonDoc (or should it be applicative?) MongoDB ------- + support full level 0 - database command support ?? - handle query errors - hint, explain, count, $where - database profiling: set/get profiling level, get profiling info - validate a collection in a database ?? - pair mode connection - operations on database objects * getName * getCollection * executeCommand * add_son_manipulators * authenticate * dereference (dbref) * error * eval * last_status * logout * reset_error_history - database admin * getAdmin * getProfilingLevel * setProfilingLevel * getProfilingInfo * validateCollection - collection * modify * replace * repsert * getCount() * getCount(query) - index operations * createIndex * dropIndex * dropIndexes * getIndexInformation - misc operations * explain * getOptions * getName * close - cursor object * hasMore orderby (sort) optional: - automatic reconnection - buffer pooling - advanced connection management (master-server, replica pair, Option_SlaveOk) - Tailable cursor support + support safe operations + auto-reconnection + auto-destoy connection (how?/when?) + pymongo returns the new ObjectId(s) on insert + don't read into cursor until needed, but have cursor send getMore before it is actually out of docs (so network is finished by the time we're ready to consume more) + support a LIMITed quickFind Misc ---- + learn more about haskelldb, anything we can learn from there + go through pymongo api and figure out what parts to adopt (also look at other languages?) - database_names() - collection_names() + support for aggricated commands like listing collections + kill prefix on data types "eg QO_*"? + javascript + tailable cursor support - only close cursor when cursorID is 0 - have to create loop that sleeps and retries - lazy list support + error handling? + concurrency (share connection?) + is there a garbage collector hook that will let us free cursors and connections? Tests? Documentation - ref - tutorial GridFS