Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Lua driver for mongodb
C++ Lua C Makefile
branch: master
Failed to load latest commit information.
debian Making it work
rockspec Updated rockspec files
tests It is working in linux
.dir-locals.el Updated dir-locals
.gitignore Added gitignore
CHANGESLIST.md Added changeslist
LICENSE Create LICENSE
Makefile Minor change in makefile
README.md Adding comments to README
common.h Solving weird problem in Linux when generating the shared library. Re…
main.cpp Added mongo.time
mongo_bsontypes.cpp Solving weird problem in Linux when generating the shared library. Re…
mongo_connection.cpp Merge branch 'master' of ssh://github.com/moai/luamongo
mongo_cursor.cpp Solving weird problem in Linux when generating the shared library. Re…
mongo_cxx_extension.cpp Solving weird problem in Linux when generating the shared library. Re…
mongo_cxx_extension.h Added new namespace to avoid collisions with future mongo_cxx driver …
mongo_dbclient.cpp Added error message to run_command
mongo_gridfile.cpp Solving weird problem in Linux when generating the shared library. Re…
mongo_gridfilebuilder.cpp Solving weird problem in Linux when generating the shared library. Re…
mongo_gridfs.cpp Solving weird problem in Linux when generating the shared library. Re…
mongo_gridfschunk.cpp Solving weird problem in Linux when generating the shared library. Re…
mongo_query.cpp Solving weird problem in Linux when generating the shared library. Re…
mongo_replicaset.cpp Solving weird problem in Linux when generating the shared library. Re…
utils.cpp Solving weird problem in Linux when generating the shared library. Re…
utils.h Solving weird problem in Linux when generating the shared library. Re…

README.md

A Lua driver for mongodb

Compilation

The makefile automatically detects which platform and Lua version are you using, so for compilation you just need to do:

$ make

You can force the platform compilation by using $ make Linux or $ make Darwin. Additionally, you can force the Lua version by doing:

$ make LUAPKG=lua5.2

where lua5.2 can be replaced by lua5.1 and luajit.

Installation

Copy the library file mongo.so to any of the paths in LUA_CPATH environment variable or Lua string package.path.

Wiki Documentation

Support

Submit issues to the moai github site.

There is a Google Groups mailing list.

Example

local mongo = require('mongo')

-- Create a connection object
local db = assert(mongo.Connection.New())

-- connect to the server on localhost
assert(db:connect('localhost'))

-- insert a value into the namespace 'test.values'
assert(db:insert('test.values', {a = 10, b = 'str1'}))

-- the same using a JSON string
assert(db:insert('test.values', "{'a': 20, 'b': 'str2'}"))

-- insert a multiple values into the namespace 'test.values'
assert(db:insert_batch('test.values', {{a = 10, b = 'str1'}, {c = 11, d = 'str2'}}))

-- print the number of rows in the namespace 'test.values'
print(db:count('test.values'))

-- query all the values in the namespace 'test.values'
local q = assert(db:query('test.values', {}))

-- loop through the result set
for result in q:results() do
    print(result.a)
    print(result.b)
end

How It Works

luamongo is a Lua library that wraps the mongodb C++ API. Currently it has been tested with legacy-0.9.0 version of this driver.

The current implementation does not give you raw access to the BSON objects. BSON objects are passed to the API using a Lua table or a JSON string representation. Every returned BSON document is fully marshalled to a Lua table.

Installing

luarocks can be used to install luamongo last SCM version:

luarocks install "https://raw.githubusercontent.com/moai/luamongo/master/rockspec/luamongo-scm-0.rockspec"

or install any other of the versions available at rockspec directory.

For modern Linux systems, you will need to update your luarocks configuration file, usually located at /etc/luarocks/config.lua or /usr/local/etc/luarocks/config.lua, adding the following Lua table:

external_deps_dirs = {
  {
    prefix='/usr/',
    include='include',
    lib='lib',
  },
  {
    prefix='/usr/',
    include='include',
    lib='lib/i386-linux-gnu',
  },
  {
    prefix='/usr/',
    include='include',
    lib='lib/x86_64-linux-gnu',
  },
  {
    prefix='/usr/local',
  },
}
Something went wrong with that request. Please try again.