MongoDB on the Raspberry Pi 2

Raspberry Pi 2 After purchasing a Raspberry Pi 2, I decided to move some of my projects to it.  I also added an external 2.5 inch USB drive via a USB hub.  I store various sensor information in a MongoDB database and needed everything to run on the R-Pi 2.  I chose to stick with the well-supported Debian Linux port, Raspbian Wheezy, as opposed to ARCH Linux that I used on my old R-Pi B+, as the R-Pi 2 has a quad core ARMv7 processor that requires a new kernel.

UPDATE (30 January 2016):  I’ve compiled MongoDB 3.0.9 and tools for R-Pi 2 Raspbian (Jessie).  Check here.

UPDATE (25 December 2015): Instructions for compiling MongoDB 3.0.7 and tools for R-Pi 2 running Raspbian Jessie are now available.  Check here.

UPDATE (8 November 2015): If you are running Raspbian Jessie, you can “apt-get install mongodb”.  This will result in an install of MongoDB v2.4.  Good enough for most uses and you get a working mongo shell 😉  If you want MongoDB v2.6.3, read-on!

I was back to hunting for a compatible MongoDB binary — or instructions on how to compile from source.  Research showed that MongoDB does not compile for ARM after version 2.6.3 🙁  Searching the ‘net led me to the “facat’ blog.” This blog shows how to cross-compile MongoDB 2.6.3 for ARM.  Precompiled binaries are also available.  NOTE that the mongo shell does NOT work correctly on the R-Pi.  “mongod”, the server, does work fine and can be accessed programmatically or via a mongo shell from another (non-R-Pi) computer.  I use “mongo” on my Mac to connect to “mongod” running on the R-Pi 2.

more after the break

I created a “mongodb.conf” in “/etc” that configures MongoDB to use a data directory and log file on my USB-connected hard drive which is mounted on “/mnt”.  The config file:

$ cat mongodb.conf
systemLog:
destination: file
path: "/mnt/log/mongodb/mongodb.log"
logAppend: true
quiet: true
storage:
dbPath: "/mnt/DBdata"
journal:
enabled: true
processManagement:
fork: true
net:
bindIp: XXX.0.0.XXX
port: 27017

I invoke mongod with “mongod -f /etc/mongodb.conf”  I connect via mongo on my Mac with “mongo −−host XXX.0.0.XXX”  You can get a zip file of all of the MongoDB executables here. NOTE again that the MongoDB shell, “mongo” does not work correctly on the R-Pi and throws a segment fault on many operations.

I also recommend Robomongo,  a shell-centric cross-platform open source MongoDB management tool (i.e. Admin GUI). Robomongo embeds the same JavaScript engine that powers MongoDB’s mongo shell.  It is available for Mac, Windows and Linux.

9 thoughts on “MongoDB on the Raspberry Pi 2”

  1. Yes, given the 32-bit nature of the R-Pi’s ARM CPU, databases are limited to 2GB. I create multiple databases for large data needs and use Javascript to query and combine result sets.

  2. Although yes they may be limited in their use, especially when only using one. I look at it this way. It’s an embedded client that can be connected to a server. The server being the one with more compute and capacity. I have had no trouble with the limit storage since the data can be synced and flushed daily/weekly/monthly.

    1. Update 22 Dec 2015: OK you CAN compile MongoDB 3.0.x on a R-Pi 2 running Jessie. Instructions coming soon… The WiredTiger engine does not work under 32-bit ARM, however.

      MongoDB 3.x requires a 64-bit processor which the R-Pi 2 does NOT have (Raspian Jessie is a 32-bit OS). I also believe MongoDB 3.x only runs on Intel processors, currently.

    1. Pradip, As you noted Robomongo does not run on ARM under Raspbian. I use Robomongo on my Mac to connect remotely into my MongoDB DBs on my R-Pis 😉 Otherwise I just stick to the mongo shell on R-Pi.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top