From charlesreid1

Line 20: Line 20:


These assume you have ubuntu xenial, see link [https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/] for other LTS releases.
These assume you have ubuntu xenial, see link [https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/] for other LTS releases.
===Fixing Stupid Issues===
On Ubuntu there is a stupid issue with the startup service - a mistake.
Edit the file <code>/lib/systemd/system/mongod.service</code>
Change the line
<pre>
ExecStart=/usr/bin/mongod -f /etc/mongod.conf
</pre>
to the following (note the name of the conf file):
<pre>
ExecStart=/usr/bin/mongod -f /etc/mongodb.conf
</pre>
Pretty stupid, ey?


===Homebrew===
===Homebrew===

Revision as of 00:38, 31 January 2018

Setting Up

Installing

Debian/Ubuntu

MongoDB provides instructions for installing on Debian/Ubuntu. The short version: don't do apt-get install mongodb.

Here's what you do:

  • Add the mongodb aptitude repositories to your aptitude
  • Update your aptitude
  • Install a mongodb package from mongodb.org
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list
sudo apt-get update
sudo apt-get install -y mongodb-org

These assume you have ubuntu xenial, see link [1] for other LTS releases.

Fixing Stupid Issues

On Ubuntu there is a stupid issue with the startup service - a mistake.

Edit the file /lib/systemd/system/mongod.service

Change the line

ExecStart=/usr/bin/mongod -f /etc/mongod.conf

to the following (note the name of the conf file):

ExecStart=/usr/bin/mongod -f /etc/mongodb.conf

Pretty stupid, ey?

Homebrew

Was able to install this ok with Homebrew: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/#install-mongodb-community-edition-with-homebrew

brew update
brew install mongodb

or to install the development version:

brew update
brew install mongodb --devel

Configuring

Link to documentation page on config options: https://docs.mongodb.com/manual/reference/configuration-options/

To start mongodb with a specified config file, use the --config or -f options:

mongod --config /etc/mongod.conf
mongod -f /etc/mongod.conf

Core mongodb config sections:

  • systemLog
  • net

systemLog

# default:

systemLog:
  destination: file
  path: /var/log/mongodb/mongod.log
  logAppend: true

can also set verbosity (0-5):

systemLog:
    destination: file
    path: /var/log/mongodb/mongod.log
    verbosity: 2
    logRotate: rename

If using logrotate util, set logRotate: reopen

Can further customize log behavior for specific components (access, commands, etc.)

net

net:
    port: 27017
    bindIp: 10.0.0.1
    ipv6: True

There are also several options for SSL. Those go into an ssl subsection of the net section of the config file.

Starting

To start the mongodb service, use the mongod service:

sudo service mongod start

Selecting an Interface

The first thing you have to decide before interacting with the database is how you want to interact.

The mongodb shell is a javascript shell that can be used from a command line on the mongodb server.

Mongodb also has python language bindings. there are multiple non-mongo-provided third party APIs and libraries too, so there are multiple options.

Basic CRUD Operations

MongoDB performs CRUD (create, read, update, delete) transactions/operations on the data that it stores.

Create (Insert)

To insert documents into a collection:

  • db.collection.insertOne()
  • db.collection.insertMany()

Example: db.users.insertOne({name:"Sue", age:26})

Read (Query)

To read documents from a collection, use the find function:

  • db.collection.find()

Example: db.users.find({age:{$gt:18}})

Update

To update documents in a collection:

  • db.collection.updateOne()
  • db.collection.updateMany()
  • db.collection.replaceOne()

Example: db.users.updateMany( {age:{$lt:18}, $set: {status: "reject"}} )

Delete

Delete documents one at a time or en masse:

  • db.collection.deleteOne()
  • db.collection.deleteMany()

Monitoring

MongoDB as a Monitoring Target

MongoDB has several mechanisms for monitoring the state of the database (per second operations, cache sizes, disk and memory usage, etc.)

Utilities like Netdata and Collectd have plugins written for MongoDB that can collect this information as part of scraping the system status.

MongoDB as a Monitoring Data Store

The Write_MongoDB plugin provides a plugin for collectd to write its data to MongoDB.

Plugin link: https://collectd.org/wiki/index.php/Plugin:Write_MongoDB

References

pymodm: https://pymodm.readthedocs.io/en/latest/getting-started.html

Database design patterns: https://docs.mongodb.com/manual/applications/data-models/

Cheat sheet: https://blog.codecentric.de/files/2012/12/MongoDB-CheatSheet-v1_0.pdf


Related Page

Flags