MongoDB

From Wasya Wiki
Jump to: navigation, search

Install

From: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/

From: https://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/

From: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/


Develop

rename a field, or paste one field to another collection-wide

Methods are: updateOne, updateMany or update

db.collection.<update method>(
    {},
    [
        {"$set": {"name": { "$concat": ["$firstName", " ", "$lastName"]}}}
    ]
)

Count Documents

db.collection.aggregate(
  [
    { $group: { _id: null, count: { $sum: 1 } } }
  ]
)

list users

use admin;
db.getUsers();

create user

 use admin;
db.createUser(
  {
    user: "myTester",
    pwd:  passwordPrompt(),   // or cleartext password
    roles: [ { role: "readWrite", db: "test" },
             { role: "read", db: "reporting" } ]
  }
)

add role to a user


db.grantRolesToUser('<username>', [
  { role: "readWrite", db: "<dbname>" }
], { w: "majority" , wtimeout: 4000 })

Performance Tuning

db.getProfilingStatus()
db.getProfilingLevel()
db.setProfilingLevel(1, 10)
db.getCollection('system.profile').find({})

add member to cluster

operaeventrsX:PRIMARY> rs.add("10.138.96.89")
operaeventrsX:PRIMARY> rs.conf()

profiling

Profiling. From: https://docs.mongodb.com/manual/reference/method/db.setProfilingLevel/

The profiler writes all the data it collects to the system.profile collection, a capped collection in the admin database.

db.getProfilingStatus()
# db.setProfilingLevel(level, options)
db.setProfilingLevel(1, { "slowms": 500 })
db.enableFreeMonitoring()
use creek_development
db.setProfilingLevel(1, { "slowms": 500 })
db.getCollection('system.profile').find({}).sort({"ts": -1}).limit( 5 )
db.lineitems.getIndexes()