Commit graph

103 commits

Author SHA1 Message Date
Oleksandr Petrov
01063a3476 Removing outdated comment 2011-11-25 17:33:10 +01:00
Oleksandr Petrov
94acfdec54 Changing 'is' test to 'are' for brevity. 2011-11-19 23:41:53 +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
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
Oleksandr Petrov
8c93095393 Adding test demonstrating regexp document search. 2011-11-13 17:47:26 +01: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
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
7a9dcbf15d Tests/examples for the $rename modifier 2011-10-31 02:52:44 +04:00
Michael S. Klishin
f29d62f181 Tests/examples for $pull and $pullAll modifiers 2011-10-31 02:40:55 +04:00
Michael S. Klishin
60ca5c04a2 Tests/examples for the $pop modifier 2011-10-31 02:30:07 +04:00
Michael S. Klishin
ec26008c4f Tests/examples for the $addToSet modifier 2011-10-31 02:20:54 +04:00
Michael S. Klishin
6615c16675 Tests/examples for the $pushAll modifier
Also demonstrate a common mistake when $push is used instead of $pushAll with an
array value.
2011-10-31 00:49:44 +04:00
Michael S. Klishin
5dba219537 Tests/examples for the $push modifier 2011-10-31 00:12:43 +04:00
Michael S. Klishin
537969ff09 Tests/examples for the modifier 2011-10-30 23:57:33 +04:00
Michael S. Klishin
d855762546 Tests/examples for the $inc modifier 2011-10-30 19:01:01 +04:00
Michael S. Klishin
9bd9b93fa1 Initial set of tests for atomic modifiers
Mostly to serve as examples but also to see where we may be beneficial
for Monger to offer special support for some of them.
2011-10-30 17:41:11 +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
Michael S. Klishin
c820d5885a Use monger.result/ok? and do not compare to `true' here 2011-10-16 18:19:26 +04:00
Oleksandr Petrov
edbaec0a3b Merge branch 'master' of https://github.com/michaelklishin/monger 2011-10-16 16:04:55 +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
ddf3156c8e Load mapper function from .js resource 2011-10-16 16:02:13 +04: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
4be37a4f67 Formatting 2011-10-16 15:54:09 +04:00
Michael S. Klishin
3963808152 Introduce monger.collection/distinct 2011-10-16 14:19:04 +04:00
Michael S. Klishin
d639fab9cf Two more reflection warnings 2011-10-15 04:17:59 +04:00
Michael S. Klishin
946348a8d9 Nuke a couple of reflection warnings 2011-10-15 04:16:02 +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
a7264122e3 Use clojure.test/are and namespace aliases 2011-10-11 21:04:21 +04:00
Michael S. Klishin
c48c87fd2f Skip 1M documents test, it requires JVM parameters tweaking (-Xmx) for most people 2011-10-11 20:59:42 +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
db6721ddab Brush up conversion tests 2011-10-08 04:46:49 +04:00
Michael S. Klishin
4999891e59 Alias monger.collection that we use very heavily in monger.test.collection 2011-10-08 04:44:13 +04:00
Michael S. Klishin
59da9db80d Improve this test 2011-10-08 04:42:10 +04:00
Michael S. Klishin
69d7abb747 Ditto 2011-10-08 04:39:18 +04:00
Michael S. Klishin
d05b5bec8c Demonstrate iteration over DBCursors with iterator-seq 2011-10-08 03:01:04 +04:00
Michael S. Klishin
625db17646 A few basic batch insert stress tests 2011-10-08 02:29:16 +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
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