forked from mongodb/mongoDB-haskell
-
Notifications
You must be signed in to change notification settings - Fork 11
/
TODO
103 lines (94 loc) · 2.48 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
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, $where
- database profiling: set/get profiling level, get profiling info
- pair mode connection
- operations on database objects
* getName
* getCollection
* add_son_manipulators
* authenticate
* dereference (dbref)
* error
* eval
* last_status
* logout
* reset_error_history
* eval
- database admin
* getAdmin
* getProfilingLevel
* setProfilingLevel
* getProfilingInfo
- collection
* modify
* replace
* repsert
- index operations
* ensureIndex / index existance caching
- misc operations
* explain
* getOptions
* getName
* close
* group
* distinct
* map reduce
- 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
pretty printer
deep "lookup" function (other deep Map functions?)
how to make bytestrings less painful
custom Show/Read instance that looks more like json
make sure NULLs aren't in created table names