134 lines
4.4 KiB
Markdown
134 lines
4.4 KiB
Markdown
# Monger, a modern Clojure MongoDB Driver
|
|
[](https://travis-ci.org/xingzhefeng/monger)
|
|
Monger is an idiomatic [Clojure MongoDB driver](http://clojuremongodb.info) for a more civilized age.
|
|
|
|
It has batteries included, offers powerful expressive query DSL,
|
|
strives to support modern MongoDB features and have the "look and feel" and
|
|
flexibility of the MongoDB shell.
|
|
|
|
Monger is built from for modern Clojure versions and sits on top of
|
|
the official MongoDB Java driver.
|
|
|
|
|
|
## Project Goals
|
|
|
|
There is one MongoDB client for Clojure that has been around since 2009. So, why create another one? Monger authors
|
|
wanted a client that would
|
|
|
|
* Support most of modern MongoDB features, focus on those that really matter.
|
|
* Be [well documented](http://clojuremongodb.info).
|
|
* Be [well tested](https://github.com/michaelklishin/monger/tree/master/test/monger/test).
|
|
* Target modern Clojure versions.
|
|
* Be as close to the Mongo shell query language as practical
|
|
* Integrate with libraries like Joda Time, [Cheshire](https://github.com/dakrone/cheshire), clojure.data.json, [Ragtime](https://github.com/weavejester/ragtime).
|
|
* Support URI connections to be friendly to Heroku and other PaaS providers.
|
|
* Not carry technical debt from 2009 forever.
|
|
* Integrate usage of JavaScript files and ClojureScript (as soon as the compiler gets artifact it is possible to depend on for easy embedding).
|
|
|
|
|
|
|
|
## Project Maturity
|
|
|
|
Monger is not a young project: started in July 2011, it is over 7
|
|
years old with active production use from week 1.
|
|
|
|
|
|
## Artifacts
|
|
|
|
Monger artifacts are [released to
|
|
Clojars](https://clojars.org/com.novemberain/monger). If you are using
|
|
Maven, add the following repository definition to your `pom.xml`:
|
|
|
|
``` xml
|
|
<repository>
|
|
<id>clojars.org</id>
|
|
<url>http://clojars.org/repo</url>
|
|
</repository>
|
|
```
|
|
|
|
### The Most Recent Release
|
|
|
|
With Leiningen:
|
|
|
|
[com.novemberain/monger "3.5.0"]
|
|
|
|
With Maven:
|
|
|
|
<dependency>
|
|
<groupId>com.novemberain</groupId>
|
|
<artifactId>monger</artifactId>
|
|
<version>3.5.0</version>
|
|
</dependency>
|
|
|
|
|
|
|
|
## Getting Started
|
|
|
|
Please refer to our [Getting Started
|
|
guide](http://clojuremongodb.info/articles/getting_started.html). Don't
|
|
hesitate to join our [mailing
|
|
list](https://groups.google.com/forum/#!forum/clojure-mongodb) and ask
|
|
questions, too!
|
|
|
|
|
|
## Documentation & Examples
|
|
|
|
Please see our [documentation guides site](http://clojuremongodb.info/) and [API reference](http://reference.clojuremongodb.info).
|
|
|
|
Our [test suite](https://github.com/michaelklishin/monger/tree/master/test/monger/test)
|
|
also has many code examples.
|
|
|
|
|
|
## Community
|
|
|
|
[Monger has a mailing list](https://groups.google.com/forum/#!forum/clojure-mongodb). Feel
|
|
free to join it and ask any questions you may have.
|
|
|
|
To subscribe for announcements of releases, important changes and so
|
|
on, please follow [@ClojureWerkz](https://twitter.com/#!/clojurewerkz)
|
|
on Twitter.
|
|
|
|
|
|
## Supported Clojure versions
|
|
|
|
Monger requires Clojure 1.8+. The most recent
|
|
stable release is highly recommended.
|
|
|
|
|
|
## Continuous Integration Status
|
|
|
|
[](http://travis-ci.org/michaelklishin/monger)
|
|
|
|
|
|
## Monger Is a ClojureWerkz Project
|
|
|
|
Monger is part of the [group of Clojure libraries known as ClojureWerkz](http://clojurewerkz.org), together with
|
|
[Cassaforte](http://clojurecassandra.info), [Langohr](http://clojurerabbitmq.info), [Elastisch](http://clojureelasticsearch.info), [Quartzite](http://clojurequartz.info) and several others.
|
|
|
|
|
|
|
|
## Development
|
|
|
|
Monger uses [Leiningen 2](https://github.com/technomancy/leiningen/blob/master/doc/TUTORIAL.md). Make sure you have it installed and then run tests against
|
|
supported Clojure versions using
|
|
|
|
./bin/ci/before_script.sh
|
|
lein all do clean, javac, test
|
|
|
|
Or, if you don't have mongodb installed, you can use docker
|
|
|
|
docker-compose up
|
|
./bin/ci/before_script_docker.sh
|
|
lein all do clean, javac, test
|
|
|
|
Then create a branch and make your changes on it. Once you are done with your changes and all tests pass, submit a pull request
|
|
on Github.
|
|
|
|
|
|
|
|
## License
|
|
|
|
Copyright (C) 2011-2018 [Michael S. Klishin](http://twitter.com/michaelklishin), Alex Petrov, and the ClojureWerkz team.
|
|
|
|
Double licensed under the [Eclipse Public License](http://www.eclipse.org/legal/epl-v10.html) (the same as Clojure) or
|
|
the [Apache Public License 2.0](http://www.apache.org/licenses/LICENSE-2.0.html).
|