Commit graph

121 commits

Author SHA1 Message Date
Oleksandr Petrov
9af8a13ea9 Merge branch 'master' of https://github.com/michaelklishin/monger 2012-01-25 21:56:09 +01:00
Oleksandr Petrov
7ab8d51a84 Adding missing $nin operator. 2012-01-25 21:56:06 +01:00
Michael S. Klishin
a3d6a66eb1 Use GridFS/DEFAULT_CHUNKSIZE instead of our own default
Ruby driver uses 2 MB default chunk size, Java driver uses 256K. Lets use what the Java driver
does.
2011-12-31 16:55:32 +04:00
Michael S. Klishin
1187719ac1 Extend monger.gridfs.GridFSInputFileFactory to support input streams 2011-12-31 16:52:23 +04:00
Michael S. Klishin
cb9ed8edb5 monger.gridfs/find-one-as-map is next to useless, remove it
It does not allow you access file content stream.
2011-12-31 16:27:56 +04:00
Michael S. Klishin
a292f082e8 Implement monger.gridfs/find-one and /find-one-as-map 2011-12-31 16:23:49 +04:00
Michael S. Klishin
7da99d98a3 Implement monger.gridfs.GridFSInputFileFactory for java.io.File instances 2011-12-31 15:01:00 +04:00
Michael S. Klishin
ced9b50153 Make monger.gridfs.IOFactory implementation for String to work the same way as clojure.java.io/IOFactory one does
It treats string arguments as local filesystem paths
2011-12-31 14:57:17 +04:00
Michael S. Klishin
bb806d5c0f Remove unused DSL support functions 2011-12-31 07:03:15 +04:00
Michael S. Klishin
d0f2cbc737 Add monger.core/*mongodb-gridfs* and related with-* macro. Blow the dust off monger.core along the way. 2011-12-31 06:57:29 +04:00
Michael S. Klishin
eab4405012 Initial bits of monger.gridfs 2011-12-31 06:56:02 +04:00
Michael S. Klishin
3c813132d8 Return type of monger.conversion/to-db-object is always the same, hint it 2011-12-31 06:44:34 +04:00
Michael S. Klishin
f3efbcec16 One more query DSL composition example, introduce monger.query/partial-query 2011-12-31 04:25:26 +04:00
Michael S. Klishin
8300b7c0c4 Eliminate compiler warning 2011-12-31 04:24:27 +04:00
Michael S. Klishin
1cb024dcad Add read preference support for monger.query DSL 2011-12-30 17:19:44 +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
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
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
be06397849 Introduce monger.collection/any?
Useful for detecting duplicate documents and so on
2011-11-28 20:12:19 +04: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
9664961120 Adding some docs to querying. 2011-11-19 23:41:36 +01: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
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