分类: 数据库开发技术
2011-06-20 16:00:42
The first half of the MongoDB book is due this week, so I wrote a REST interface for Mongo (I’m a prolific procrastinator). Anyway, it’s called Sleepy.Mongoose and it’s available at.
Installing Sleepy.Mongoose
You’ll see something that looks like:
================================= | MongoDB REST Server | ================================= listening for connections onUsing Sleepy.Mongoose
First, we’re just going to ping Sleepy.Mongoose to make sure it’s awake. You can use curl:
and it’ll send back a Star Wars quote.
To really use the interface, we need to connect to a database server. To do this, we post our database server address to the URI “/_connect” (all actions start with an underscore):
This connects to the database running at localhost:27017.
Now let’s insert something into a collection.
This will insert the document {“x” : 1} into the foo database’s bar collection. If we open up the JavaScript shell (mongo), we can see the document we just added:
But why bother opening the shell when we can query with curl?
Note that queries are GET requests, whereas the other requests up to this point have been posts (well, the _hello can be either).
A query returns three fields:
In this case “id” is irrelevant as we only have one document in the collection but if we had a bunch, we could use the id to get more results (_find only returns the first 15 matching documents by default, although it’s configurable). This will probably be clearer with an example, so let’s add some more documents to see how this works:
Now we have three documents. Let’s do a query and ask for it to return one result at a time:
The only difference between this query and the one above is the “?batch_size=1″ which means “send one document back.” Notice that the cursor id is 1 now, too (not 0). To get the next result, we can do:
Now let’s remove a document:
Now if we do a _find, it only returns two documents:
And finally, updates:
Let’s do a _find to see the updated object, this time using criteria: {“x”:2}. To put this in a URL, we need to escape the ‘{‘ and ‘}’ characters. You can do this by copy-pasting it into any javascript interpreter (Rhino, Spidermonkey, mongo, Firebug, Chome’s dev tools) as follows:
And now we can use that in our URL:
If you’re looking to go beyond the basic CRUD, there’s more documentation in the .
This code is super-alpha. Comments, questions, suggestions, patches, and forks are all welcome.
Note: Sleepy.Mongoose is an offshoot of something I’m actually supposed to be working on: a JavaScript API we’re going to use to make an awesome sharding tool. Administrating your cluster will be a point-and-click interface. You’ll be able to see how everything is doing, drag n’ drop chunks, visually split collections… it’s going to be so cool.
source : http://www.snailinaturtleneck.com/blog/2010/02/22/sleepy-mongoose-a-mongodb-rest-interface/