Michael S. Klishin
d9f5ae5951
Move pagination helper to monger.internal.pagination
2011-11-15 03:48:31 +04:00
Michael S. Klishin
3534e579b7
Add pagination support to monger.query DSL
...
An example:
(with-collection coll
(find {})
(paginate :page 1 :per-page 3)
(sort { :title 1 }))
2011-11-15 03:44:19 +04:00
Michael S. Klishin
0536244dce
Merge branch 'master' into query-dsl
...
Conflicts:
src/monger/operators.clj
2011-11-14 15:23:47 +04:00
Michael S. Klishin
bd133c1afc
Initial version of the monger.query DSL
...
Here is what it looks like:
(with-collection "docs"
(find { :inception_year { $lt 2000 $gte 2011 } })
(fields { :inception_year 1 :name 1 })
(skip 10)
(limit 20)
(batch-size 50)
(hint "my-index-name")
(snapshot))
2011-11-14 15:15:43 +04:00
Michael S. Klishin
c40b0e25c1
Simplify defoperator
2011-11-12 20:46:34 +04:00
Michael S. Klishin
0b242f9586
Add operator
2011-11-12 20:33:02 +04:00
Oleksandr Petrov
047d5b6a88
Separating operators to Logical Operators, Query Operators and Atomic Modifiers.
...
Adding docs to most of operators (still TBC), giving more examples, improving test suite.
2011-11-11 18:55:43 +01:00
Oleksandr Petrov
df12686708
Making defoperator private by default
2011-11-11 18:54:11 +01:00
Michael S. Klishin
c109702117
Rewort $operator macros to evaluate to strings and not functions
...
Unlike Casbah and Korma, we already use query language data structures as close to what MongoDB uses as possible
(Clojure maps, vectors, numerics and strings are effectively JSON) so we don't need any layers on top, they won't improve
anything.
Having these operators is nice beacuse if you use atomic operators a lot, this will make sure Clojure compiler catches
typos for you. It is completely opt-in, however.
Finally, having a function inserted carries certain runtime performance cost and having $operator macros
that evaluate to themselves does not.
Per discussion with Alex.
2011-11-09 12:40:22 +04:00
Oleksandr Petrov
bb169d3ae3
Adding operators DSL in order to use Clojure functions instead of hashes.
...
Casbah has a similar concept called Bareword Operators.
Korma uses operators a bit differently, but idea is quite same, too.
One of the obvious advantages is that you can make sure you didn't screw make a typo
in operator name during compile-time. Plus, we can guarantee that there is a subset
of used / supported operators, and add them gradually, keeping track of them in one place,
which will simplify tests, too.
2011-11-08 00:12:10 +01:00
Michael S. Klishin
758fb9e7e6
Support skip & limit for monger.collection/find and /find-maps
...
As test example demonstrates, closely following DBCollection and DBCursor API has one downside:
queries that use sorting look really ugly. So monger needs to come up with a DSL à la Casbah or SQLKorma
to make this really nice.
2011-11-05 09:45:54 +04:00
Michael S. Klishin
20c271eee5
A typo
2011-11-05 08:31:46 +04:00
Michael S. Klishin
746d83459e
Rename function that sets *default* write concern
2011-10-18 18:11:51 +04:00
Michael S. Klishin
fbd00ee151
Use WriteConcern/SAFE by default
...
WriteConcern/NORMAL is ridiculously dangerous and most apps simply do not have performance
requirements to justify completely ignoring server responses.
2011-10-18 17:50:28 +04:00
Oleksandr Petrov
edbaec0a3b
Merge branch 'master' of https://github.com/michaelklishin/monger
2011-10-16 16:04:55 +02:00
Oleksandr Petrov
1dc94ae351
Adding some docs for indexing.
2011-10-16 16:04:51 +02:00
Oleksandr Petrov
410ef23b03
Adding some docs and minor tests for monger.core/command.
2011-10-16 15:39:21 +02:00
Michael S. Klishin
4336b6f414
Introduce monger.js/load-resource, a helper that loads JS files from the classpath
...
Yes, to be used with map/reduce and so on.
2011-10-16 15:54:53 +04:00
Michael S. Klishin
3963808152
Introduce monger.collection/distinct
2011-10-16 14:19:04 +04:00
Michael S. Klishin
c62c433559
Initial map/reduce support
2011-10-14 22:18:35 +04:00
Michael S. Klishin
7d79866eff
To serialize joda.time.DateTime to JSON, use ISO date time format
2011-10-14 01:01:40 +04:00
Michael S. Klishin
8b22e9eef1
Extend JodaTime integration
...
This is not perfect since it currently ignores output writer paramter
and assumes clojure.data.json but it is a significantly better choice than
forcing every clojure.data.json user to use JodaTime.
2011-10-13 23:47:36 +04:00
Michael S. Klishin
cae818f646
Add (optional) conversion protocol extension to support Joda Time types
...
Much like we already do with clojure.data.json.
2011-10-13 18:04:49 +04:00
Michael S. Klishin
d966fabd3e
Clean up
2011-10-13 18:03:53 +04:00
Oleksandr Petrov
75d52331bf
Adding some docs and tests to collection.
2011-10-11 18:55:40 +02:00
Michael S. Klishin
886a270bf9
Introduce monger.collection/find-seq
...
For cases when you do not want to work with DBCursors but also
do not need conversion to maps that monger.collection/find-maps does.
2011-10-08 12:08:26 +04:00
Michael S. Klishin
74dcd77092
Use "new style" type hints
2011-10-08 03:48:46 +04:00
Michael S. Klishin
c875883534
declare vars that are initially unbound
2011-09-19 12:34:10 +04:00
Michael S. Klishin
c5850bd59f
Get rid of monger.util/with-ns
...
It was an awful hack, now replaced by a less awful one.
2011-09-19 12:31:29 +04:00
Michael S. Klishin
189d2366ab
Hm, yeah
2011-09-19 12:29:22 +04:00
Michael S. Klishin
2673c5bc0f
Add monger.core/with-connection and monger.core/with-db
2011-09-19 12:18:07 +04:00
Michael S. Klishin
5e12f9aec2
Introduce monger.core/connect! and monger.core/set-db!
...
Even though it is not idiomatic Clojure to mutate vars like this,
it is very common for many applications to only use one MongoDB
connection (so, no per-thread var rebinding) and one main database.
For those cases, these function eliminate the need for mundaine
hacks with namespace switching.
2011-09-19 12:14:48 +04:00
Michael S. Klishin
3e6a6fac44
Simplify finders that use document id
2011-09-14 14:11:56 +04:00
Michael S. Klishin
3e8e5d7b32
Don't assume id is a string (most of the time it is not)
2011-09-14 14:01:20 +04:00
Michael S. Klishin
ec84824334
Correct documentation examples
2011-09-12 10:37:24 +04:00
Michael S. Klishin
57d8e62058
monger.util/get-id now can also handle Clojure maps, using both :_id and "_id" as id keys
2011-09-11 23:16:36 +04:00
Michael S. Klishin
6d12e34465
monger.convertion => monger.conversion
2011-09-11 23:02:46 +04:00
Oleksandr Petrov
30ed15e67f
Adding docs for major collection methods.
2011-09-11 16:13:29 +02:00
Oleksandr Petrov
5a94424402
Adding monger.utils/get-id protocol extension for DBObject.
2011-09-11 16:13:14 +02:00
Oleksandr Petrov
25a24a5231
Adding basic operations documentation
2011-09-11 14:40:46 +02:00
Michael S. Klishin
1ea892328f
Use "new style" type hints
2011-09-11 11:11:02 +04:00
Michael S. Klishin
a63fc0fadd
Add license header
2011-09-11 11:10:42 +04:00
Michael S. Klishin
63d8e0848f
Blow the dust off monger.core
2011-09-10 20:41:23 +04:00
Michael S. Klishin
fadf939cd5
Implement monger.collection/rename
2011-09-10 08:46:17 +04:00
Michael S. Klishin
e681bf1a1c
Implement monger.core/command
2011-09-10 08:46:10 +04:00
Michael S. Klishin
1f091ab735
Implement monger.collection/create
2011-09-10 08:19:19 +04:00
Michael S. Klishin
24b2dbe516
Implement monger.collection/exists? and monger.collection/drop
2011-09-10 08:09:32 +04:00
Michael S. Klishin
1f9b611003
update-multi is not really worth having, monger.collection/date with the :multi option is good enough
2011-09-10 07:46:41 +04:00
Michael S. Klishin
b90834fdc5
Implement index operations
2011-09-10 07:45:47 +04:00
Michael S. Klishin
60e93b4275
Eliminate a reflection warning
2011-09-09 06:58:57 +04:00