-
Notifications
You must be signed in to change notification settings - Fork 107
Home
sleepy.mongoose is a REST interface for MongoDB.
- MongoDB, which can be downloaded from http://www.mongodb.org
- Pymongo, the MongoDB python driver (version 1.9 or greater). You can install this with
easy_install
:
$ sudo easy_install pymongo==2.7
There is also experimental SSL support in the current master (not version 0.01). To use it, you must install the Python OpenSSL package:
$ sudo easy_install pyOpenSSL
Note: sleepy.mongoose only works with Python 2.5 and higher.
Download the latest version.
Start the server by running:
$ python httpd.py
Command line flags:
-
-d
or--docroot
allows you to specify the location of your files. Defaults to the sleepy.mongoose directory
Sleepy.Mongoose only uses GETs and POSTs right now.
URIs are of the form /db_name/collection_name/_command
Commands are always prefixes by underscores.
To find all documents in the collection “users” in the database “website”, you would use the following:
http://localhost:27080/website/users/_find
You should make sure any options are URL escaped. You can easily do this with any JavaScript shell, including the mongo shell.
To query for {"x" : 1}
, we have the string '{"x" : 1}'
. We run encodeURI('{"x" : 1}')
and get "%7B%22x%22%20%3A%201%7D"
. We can now paste this beautful string into our URL:
http://localhost:27080/website/users/_find?criteria=%7B%22x%22%20%3A%201%7D
{'x' : 1}
is not valid JSON. The Python JSON parser won’t allow single quotes (or no quotes) around key names: you must always use double quotes around keys. For example, this is valid: {"x" : 1}
.
Also, types that you are used to using in other drivers (e.g., Dates) are not part of JSON, so they have to be represented in a special way. See http://www.mongodb.org/display/DOCS/Mongo+Extended+JSON.
Example:
In the shell, you might write:
{date : new Date()}
Date() is not part of JSON, so in Sleepy.Mongoose, you must write:
{date : {$date : _ms_since_epoch}}
- Hello, world!
- Connecting
- Authentication
- Inserting
- Removing
- Updating
- Querying
- Getting More Results
- Database Commands
You can find useful and very simple jquery plugin here, it will also be useful if you want to make your own jquery code to use with jstree or other jquery plugins
- Honey bunches of helpers: _ensure_index, listing databases, listing collections, dropping things
- Handlers to get $oid, $date, etc. into a proper BSON types
To run the tests, you must install restclient:
$ easy_install restclient
Then run:
$ python t/get.py
$ python t/post.py