CARVIEW |
christkv / node-mongodb-native
- Source
- Commits
- Network (7)
- Issues (0)
- Downloads (3)
- Wiki (1)
- Graphs
-
Branch:
master
click here to add a description
click here to add a homepage

name | age | message | |
---|---|---|---|
![]() |
.gitignore | Thu Jan 07 04:53:14 -0800 2010 | First Commit for Mongo DB Driver [Christian Kvalheim] |
![]() |
HISTORY | Sat Jan 30 09:26:46 -0800 2010 | Added documentation [Christian Kvalheim] |
![]() |
Makefile | Fri Jan 08 06:13:09 -0800 2010 | Added more integration tests for remove and upd... [Christian Kvalheim] |
![]() |
README.rdoc | Wed Mar 03 09:12:31 -0800 2010 | Small updates to doc [Your full name] |
![]() |
examples/ | Fri Mar 05 15:23:26 -0800 2010 | * Adjusting the examples and specs accordingly.... [cpojer] |
![]() |
integration/ | Sat Mar 13 11:44:42 -0800 2010 | Nasty BSON deserialization bug for arrays squashed [Christian Amor Kvalheim] |
![]() |
lib/ | Sun Mar 14 12:49:27 -0700 2010 | This commit actually works [ciaranj] |
![]() |
spec/ | Sat Mar 13 16:08:55 -0800 2010 | * Removing process.mixin from spec.node.js to s... [cpojer] |
Community
Check out the google group groups.google.com/group/node-mongodb-native for questions/answers from users of the driver.
Introduction
This is a node.js driver for MongoDB. It’s a port (or close to a port) of the libary for ruby at github.com/mongodb/mongo-ruby-driver/.
A simple example of inserting a document.
var client = new Db('integration_tests_20', new Server("127.0.0.1", 27017, {})); client.open(function(p_client) { client.createCollection('test_insert', function(err, collection) { client.collection('test_insert', function(err, collection) { for(var i = 1; i < 1000; i++) { collection.insert({c:1}, function(err, docs) {}); } collection.insert({a:2}, function(err, docs) { collection.insert({a:3}, function(err, docs) { collection.count(function(err, count) { test.assertEquals(1001, count); // Locate all the entries using find collection.find(function(err, cursor) { cursor.toArray(function(err, results) { test.assertEquals(1001, results.length); test.assertTrue(results[0] != null); // Let's close the db client.close(); }); }); }); }); }); }); }); });
GitHub information
The source code is available at github.com/christkv/node-mongodb-native. You can either clone the repository or download a tarball of the latest release.
Once you have the source you can test the driver by running
$ make test_all
in the main directory. You will need to have a mongo instance running on localhost for the integration tests to pass.
Examples
For examples look in the examples/ directory. You can execute the examples using node.
$ cd examples $ node queries.js
GridStore
The GridStore class allows for storage of binary files in mongoDB using the mongoDB defined files and chunks collection definition.
See the gridfs.js file under examples/ for how to use it or view the integration tests marked with test_gs_…
Notes
The current version does not support connection pooling, but it will be implemented soon.
Primary Key Factories
Defining your own primary key factory allows you to generate your own series of id’s (this could f.ex be to use something like ISBN numbers). The generated the id needs to be a 12 byte long "string".
Simple example below
// Custom factory (need to provide a 12 byte array); CustomPKFactory = function() {} CustomPKFactory.prototype = new Object(); CustomPKFactory.createPk = function() { return new ObjectID("aaaaaaaaaaaa"); } var p_client = new Db('integration_tests_20', new Server("127.0.0.1", 27017, {}), {'pk':CustomPKFactory}); p_client.open(function(p_client) { p_client.dropDatabase(function(err, done) { p_client.createCollection('test_custom_key', function(err, collection) { collection.insert({'a':1}, function(err, docs) { collection.find({'_id':new ObjectID("aaaaaaaaaaaa")}, function(err, cursor) { cursor.toArray(function(err, items) { test.assertEquals(1, items.length); // Let's close the db p_client.close(); }); }); }); }); }); });
Strict mode
Each database has an optional strict mode. If it is set then asking for a collection that does not exist will return an Error object in the callback. Similarly if you attempt to create a collection that already exists. Strict is provided for convenience.
var error_client = new Db('integration_tests_', new Server("127.0.0.1", 27017, {auto_reconnect: false}), {strict:true}); test.assertEquals(true, error_client.strict); error_client.open(function(error_client) { error_client.collection('does-not-exist', function(err, collection) { test.assertTrue(err instanceof Error); test.assertEquals("Collection does-not-exist does not exist. Currently in strict mode.", err.message); }); error_client.createCollection('test_strict_access_collection', function(err, collection) { error_client.collection('test_strict_access_collection', function(err, collection) { test.assertTrue(collection instanceof Collection); // Let's close the db error_client.close(); }); }); });
Cursors
The cursors allow for the application to pull data lazily from mongoDB. The query is deferred until you request the first object using either .each/.nextObject/.toArray.
Documentation
Work in Progress
Release Notes
See HISTORY
Credits
10gen:
https://github.com/mongodb/mongo-ruby-driver/
Google:
https://code.google.com/closure/library/
Jonas Raoni Soares Silva
https://jsfromhell.com/classes/binary-parser
License
Copyright 2009 - 2010 Christian Amor Kvalheim. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.