Difference between revisions of "MongoDB"

From RHS Wiki
Jump to navigation Jump to search
Line 66: Line 66:
 
== Security ==
 
== Security ==
 
To enable Client Access Control follow this steps:
 
To enable Client Access Control follow this steps:
 +
# Start the mongod service if not already running
 +
#:<pre>sudo service mongod start
 +
#:: or if runnig mongo directly:
 +
#::mongod --port 27017 --dbpath /data/db1</pre>
 
# Connect to the mongo instance without access control
 
# Connect to the mongo instance without access control
        mongo --port 27017
+
#:<pre>mongo --port 27017</pre>
 +
# Create the user administrator
 +
#:<pre>
 +
#::use admin
 +
#::db.createUser(
 +
#::{
 +
#::    user: "myUserAdmin",
 +
#::    pwd: "abc123",
 +
#::    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
 +
#::  }
 +
#::)</pre>
 +
# Edit /etc/mongod.conf, add:
 +
#:<pre>security:
 +
#::  authorization: enabled</pre>
 +
# Restart mongo service
 +
#:<pre> sudo service mongod restart</pre>

Revision as of 16:07, 25 February 2016

Installation

Ubuntu 14.04

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
sudo apt-get update
sudo apt-get install -y mongodb-org
# Specific version install: sudo apt-get install -y mongodb-org=3.2.1 mongodb-org-server=3.2.1 mongodb-org-shell=3.2.1 mongodb-org-mongos=3.2.1 mongodb-org-tools=3.2.1

Start/Stop/Restart MongoDB

sudo service mongod start | stop | restart

Verify that MongoDB has started successfully

Verify that the mongod process has started successfully by checking the contents of the log file at /var/log/mongodb/mongod.log for a line reading

[initandlisten] waiting for connections on port <port>

Guides

Getting Started
Before deploying MongoDB in a production environment
Manage user accounts and roles

Data directories

/var/log/mongodb
/var/lib/mongodb

Create Database

use DATABASE_NAME

Show databases

show dbs
db.adminCommand('listDatabases')
db.getMongo().getDBNames()
  • To view databases they must have data

To show the current database type:

db

Insert

db.COLLECTION_NAME.insert({"name":"data1"})

Get Colection Names

db.getCollectionNames()

Query

db.COLLECTION_NAME.find()
db.COLLECTION_NAME.find({"name": "data1"})

RDBMS Where Clause Equivalents in MongoDB

Operation Syntax Example RDBMS Equivalent
Equality {<key>:<value>} db.mycol.find({"by":"tutorials point"}).pretty() where by = 'tutorials point'
Less Than {<key>:{$lt:<value>}} db.mycol.find({"likes":{$lt:50}}).pretty() where likes < 50
Less Than Equals {<key>:{$lte:<value>}} db.mycol.find({"likes":{$lte:50}}).pretty() where likes <= 50
Greater Than {<key>:{$gt:<value>}} db.mycol.find({"likes":{$gt:50}}).pretty() where likes > 50
Greater Than Equals {<key>:{$gte:<value>}} db.mycol.find({"likes":{$gte:50}}).pretty() where likes >= 50
Not Equals {<key>:{$ne:<value>}} db.mycol.find({"likes":{$ne:50}}).pretty() where likes != 50

AND / OR Example:
Likes greater than 100 and whose title is either 'MongoDB Overview' or by is 'tutorials point'.
Equivalent sql where clause is 'where likes>10 AND (by = 'tutorials point' OR title = 'MongoDB Overview')'

db.mycol.find({"likes": {$gt:10}, $or: [{"by": "tutorials point"}, {"title": "MongoDB Overview"}]}).pretty()

Security

To enable Client Access Control follow this steps:

  1. Start the mongod service if not already running
    sudo service mongod start
    
    or if runnig mongo directly:
    mongod --port 27017 --dbpath /data/db1
  2. Connect to the mongo instance without access control
    mongo --port 27017
  3. Create the user administrator
    use admin
    db.createUser(
    {
    user: "myUserAdmin",
    pwd: "abc123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
    }
    )
  4. Edit /etc/mongod.conf, add:
    security:
    
    authorization: enabled
  5. Restart mongo service
     sudo service mongod restart