From charlesreid1

Covering some notes on MongoDB for the UGR wifi project.

MongoDB goals:

  • Get it set up and working locally with a test database script
    • Add records
    • Drop records
    • Query records - for all records within a date range, for all records matching a mac address, for all clients on a certain network, for all macs matching a certain prefix pattern
  • Get MongoDB working over stunnel
  • Get MongoDB set up in a docker container with a persistent data storage volume

Use the already-finished instructions here:

Also use the PyMODM library:

Installing

Mac

On a Mac, to test things out:

brew install mongodb --with-openssl
pip install pymodm

Ubuntu

On Ubuntu, the eventual server platform - do not apt-get install mongodb! It is crusty and an entire major version out of date.

Instead, follow MongoDB instructions here: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
sudo apt-get update
sudo apt-get install -y mongodb-org

To get Python interface to MongoDB:

apt-get install python-pip    # may be necessary
pip install pymodm

Configuration File

Path to config files

On a Mac, the configuration file should be located in /usr/local/etc/mongod.conf.

On Unbuntu, the config file should be in /etc/mongod.conf.

Default config files

Here are the contents of the default configuration file:

mongod.conf (homebrew default, v 3.4.2)

systemLog:
  destination: file
  path: /usr/local/var/log/mongodb/mongo.log
  logAppend: true
storage:
  dbPath: /usr/local/var/mongodb
net:
  bindIp: 127.0.0.1

mongod.conf (following instructions from MongoDB, see above, 3.4.3)

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb
  journal:
    enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1


#processManagement:

#security:

#operationProfiling:

#replication:

#sharding:

## Enterprise-Only Options:

#auditLog:

#snmp:

Starting

Starting Using Mongod Command

The location of the mongo daemon mongod should be in your PATH, but if not, enter the full path to the binary when running the mongod command. This will use the default configuration file.

<path to binary>/mongod

Starting Mongod with Specified Configuration File

To start with a specified config file, use the -f flag:

mongod -f /usr/local/etc/mongod.conf

Starting Mongod with Specified Data Directory

To specify the path to a directory to use as the database directory, use the --dbpath flag:

mongod --dbpath <path to data directory>