Commit graph

219 commits

Author SHA1 Message Date
Michael S. Klishin
1cb024dcad Add read preference support for monger.query DSL 2011-12-30 17:19:44 +04:00
Michael S. Klishin
ef3c224441 Fix these early tests to use locals 2011-12-30 17:10:36 +04:00
Michael S. Klishin
c25609a5c3 monger.conversion/to-object-id 2011-12-28 19:46:47 +04:00
Oleksandr Petrov
1a8eb1ef80 Added docs, improved test suite.
Removed (seq) method call from find-maps, since DBCursor implements Iterable interface. 
Added empty? method for collection.
2011-12-23 11:56:14 +01:00
Michael S. Klishin
3357179659 One more spot 2011-12-18 23:25:28 +04:00
Michael S. Klishin
3b3bb2287a Extract test DB connection into a helper, use it for every namespace that hits the database 2011-12-18 23:24:23 +04:00
Michael S. Klishin
cd1bd23b3e Switch test suite to monger.testing/defcleaner 2011-12-18 23:16:54 +04:00
Michael S. Klishin
19a9beb046 Add test examples that demonstrate java.util.Date and java.util.Calendar conversion 2011-12-16 11:42:13 +04:00
Michael S. Klishin
57c4ad6e9b Switch to clojure.java.io/resource here 2011-12-16 11:12:55 +04:00
Michael S. Klishin
f49e272f9f Introduce monger.testing/defcleaner that supposed to be used with clojure.test/use-fixtures 2011-12-16 07:18:16 +04:00
Oleksandr Petrov
e6f81e52a7 Merge branch 'master' of https://github.com/michaelklishin/monger 2011-12-03 18:40:52 +01:00
Oleksandr Petrov
16d02800d3 Commenting code, adding docs. 2011-12-03 18:39:17 +01:00
Oleksandr Petrov
611d9666bd Added get-write-concern function. 2011-12-03 18:39:02 +01:00
Oleksandr Petrov
14508e11ba Adding some items for todo. 2011-11-30 22:07:53 +01:00
Oleksandr Petrov
f2a5786ad4 Adding some docs. 2011-11-30 22:07:40 +01:00
Michael S. Klishin
8127d26442 Fix monger.util/get-id for persistent maps with string keys 2011-11-29 15:44:55 +04:00
Michael S. Klishin
c8fe274329 Exclude Clojure dependency for clojure.data.json 2011-11-28 21:05:32 +04:00
Michael S. Klishin
4e66df5326 cljt-time 0.3.3 is out 2011-11-28 20:29:38 +04:00
Michael S. Klishin
be06397849 Introduce monger.collection/any?
Useful for detecting duplicate documents and so on
2011-11-28 20:12:19 +04:00
Oleksandr Petrov
6c4e88842c Merge branch 'master' of https://github.com/michaelklishin/monger 2011-11-25 17:59:01 +01:00
Oleksandr Petrov
578673a058 Writing docs 2011-11-25 17:58:35 +01:00
Oleksandr Petrov
1124316793 Adding some docs for operators. 2011-11-25 17:33:23 +01:00
Oleksandr Petrov
01063a3476 Removing outdated comment 2011-11-25 17:33:10 +01:00
Michael S. Klishin
1ea915b336 Update mongodb Java driver to 2.7.2 2011-11-23 11:29:43 +04:00
Oleksandr Petrov
94acfdec54 Changing 'is' test to 'are' for brevity. 2011-11-19 23:41:53 +01:00
Oleksandr Petrov
9664961120 Adding some docs to querying. 2011-11-19 23:41:36 +01:00
Michael S. Klishin
ddcbf2d068 One more test for clojure.data.json integration 2011-11-16 01:00:18 +04:00
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
9b5eee13e0 Port many monger.test.querying tests to use new monger.query DSL 2011-11-15 03:10:55 +04:00
Michael S. Klishin
568efa4efc Time to bump to 1.0.0-SNAPSHOT
We still need to add more tests & a few minor features to our query DSL,
support authentication and refactor things here and there but the API is
largely locked down and the jigsaw is falling into place.

Per discussion with Alex.
2011-11-14 15:58:17 +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
ab209ca91b Add monger.query DSL example to the README 2011-11-14 15:22:12 +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
Oleksandr Petrov
8c93095393 Adding test demonstrating regexp document search. 2011-11-13 17:47:26 +01: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
f3ce1fd4b8 Upgrade to MongoDB Java driver 2.7.1 2011-11-10 20:50:44 +04:00
Michael S. Klishin
5b7badc341 Upgrade to MongoDB Java driver 2.7.1 2011-11-10 20:50:09 +04:00
Michael S. Klishin
99c46c4860 Merge branch 'master' into query-dsl 2011-11-09 12:44:56 +04: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
88fa9f07bb Query DSL work preparation 2011-11-06 23:03:36 +04:00
Michael S. Klishin
6dd3491d39 A few more test examples using "advanced" query operators 2011-11-06 04:59:27 +04: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
05466c60b7 Upgrade to MongoDB Java driver 2.7.0 2011-11-04 22:45:09 +04:00
Michael Klishin
9ae145bf3d Update README.md 2011-11-04 10:26:32 +04:00