mongodb
command
mongo --quiet --port 27017 crm --eval 'db.user.find({"name":{$regex:/^go/}}).forEach(printjson)'
use crm
db.createUser({
user: "testuser",
pwd: "test123",
roles: [
{ role: "readWrite", db: "crm" },
{ role: "dbAdmin", db: "crm" }
]
})
db.auth("testuser", "test123")
db.dropUser("testuser")
use admin
db.createUser({user:"admin",pwd:"admin123",roles:["root"]})
db.createUser({
user: 'mongouser',
pwd: 'crm123',
"roles" : [
{"role":"dbAdminAnyDatabase","db":"admin"},
{"role":"readWriteAnyDatabase","db":"admin"},
{"role":"backup","db":"admin"},
{"role":"restore","db":"admin"},
{"role":"clusterAdmin","db":"admin"}
]
})
./mongod --dbpath ./data --logpath logs/mongo.log --bind_ip 0.0.0.0 --fork --auth
mongo admin --quiet -u admin -p admin123
mongo --host mongodb://admin:admin123@127.0.0.1:27017/crm?authSource=admin
mongo --host mongodb://admin:admin123@127.0.0.1:27017,127.0.0.2:27017/crm?authSource=admin
mongo --host mongodb://admin:admin123@127.0.0.1:27017/test?authSource=admin
mongo crm --quiet --host 127.0.0.1 --port 27017 -u testuser -p test123
mongo --host mongodb://testuser:test123@127.0.0.1:27017/crm?authSource=crm --quiet
show dbs
use crm
db
db.user.insertOne({
"name":"mongodb"
})
db.dropDatabase()
show collections
show tables
db.createCollection("user",{ capped: true, size: 5242880, max: 5000 })
db.user.insertOne({ name: "Alice", age: 30 })
db.user.find()
db.user.findOne()
db.user.drop()
db.adminCommand({
renameCollection: "crm.info",
to: "crm.newinfo"
})
db.createCollection("info", {
validator: { $jsonSchema: {
bsonType: "object",
required: ["name"],
properties: {
name: {
bsonType: "string",
description: "required"
},
email: {
bsonType: "string",
pattern: "^.+@.+$",
description: "must be a vaild mailbox"
}
}
}}
})
db.info.insertOne({
"name":"mongodb",
"age": 7,
"email": "12345@qq.com"
})
db.info.insertOne({
"name":"python"
})
db.info.insertMany([
{ "name":"golang","age": 5,"email": "golang@qq.com"},
{ "name":"c++","age": 10,"email": "c++@qq.com"}
]);
db.info.insertOne({
"name":"python"
})
db.info.updateOne(
{ "name":"python"},
{ $set:{age:"12"} }
)
db.info.updateMany(
{ age: { $gt: 110 }},
{ $set: { name: "python" }}
)
db.info.replaceOne(
{"name": "python"},
{"name":"go","age":10}
)
db.info.deleteOne(
{"name":"python"}
)
db.info.deleteMany(
{"age":10}
)
db.info.findOneAndDelete(
{"name":"mongodb"}
)
db.info.findOne()
db.info.find().pretty()
db.info.find(
{"age": { $gt: 3 }}
).pretty()
db.info.find({
$and: [
{ age: { $gt: 3 } },
{ name: "golang" }
]
});
db.info.find().sort(
{ age: -1 }
);
db.info.find().sort(
{ age: 1 }
);
db.info.find().limit(10);
db.info.find(
{"name":{ $type: "string"}}
)
db.user.find({
"name": { $regex: /^go/ }
"city": { $regex: /shanghai$/ }
})
db.user.find({
"name": { $regex: /go/i }
})
db.info.createIndex({ age: 1 });
db.info.createIndex({ age: -1 },{ name: "idx_age_desc"});
db.info.getIndexes()
db.info.totalIndexSize()
db.info.dropIndex("idx_age_desc")
db.info.dropIndex("age_1")
db.info.dropIndexes()
db.info.aggregate([{
$group: { _id:"$name", total:{ $sum: 1}}
}])
db.info.aggregate([{
$group: { _id:"$name", total:{ $avg: "$age" }}
}])
backup and monitor
./mongodump --host 127.0.0.1 --port 27017 -d crm -o bak
./mongodump --host 127.0.0.1 --port 27017 -d crm -c user -o ./
./mongorestore -h 127.0.0.1:27017 -d crm --dir bak/crm
./mongorestore -h 127.0.0.1:27017 -d crm crm
./mongostat -h 127.0.0.1:27017
./mongotop -h 127.0.0.1:27017
db.serverStatus().uptime
db.serverStatus().version
db.serverStatus().mem
db.serverStatus().connections
db.serverStatus().opcounters
db.currentOp()
db.currentOp(true).inprog.forEach(function(op){ if(op.host){print(op.host)} })
use admin
db.runCommand({ currentOp: 1, $all: true })
db.runCommand({currentOp: 1, $all:[{"active" : true}]})
db.runCommand({currentOp: 1, "active" : true})
mongo --port 27017 admin --eval 'db.runCommand({currentOp: 1, $all:[{"active" : true}]})'
mongo --port 27017 admin --eval 'db.runCommand({currentOp: 1,"active" : true})'
cluster
mkdir data1 data2 data3 logs
./mongod --dbpath ./data1 --logpath logs/mongo1.log --port 27017 --fork --replSet rs0
./mongod --dbpath ./data2 --logpath logs/mongo2.log --port 27018 --fork --replSet rs0
./mongod --dbpath ./data3 --logpath logs/mongo3.log --port 27019 --fork --replSet rs0
mongo
rs.initiate()
rs.conf()
rs.add("127.0.0.1:27018")
db.adminCommand({
"setDefaultRWConcern" : 1,
"defaultWriteConcern" : {
"w" : "majority"
}
});
rs.addArb("127.0.0.1:27019")
rs.status()
rs.secondaryOk();
mongo --host mongodb://127.0.0.1:27017,127.0.0.1:27018,127.0.0.1:27019/crm?authSource=crm --quiet
mkdir shard1 shard2 conf1
./mongod --dbpath ./shard1 --logpath logs/mongos1.log --bind_ip 127.0.0.1 --port 27017 --fork --replSet rs-shard1 --shardsvr
mongo
rs.initiate();
rs.status();
exit
./mongod --dbpath ./shard2 --logpath logs/mongos2.log --bind_ip 127.0.0.1 --port 27018 --fork --replSet rs-shard2 --shardsvr
mongo --port 27018
rs.initiate();
rs.status();
exit
./mongod --dbpath ./conf1 --logpath logs/mongoc1.log --bind_ip 127.0.0.1 --port 27019 --fork --replSet rs-conf1 --configsvr
mongo --port 27019
rs.initiate();
rs.status();
exit
./mongos --logpath logs/mongos1.log --port 27020 --fork --bind_ip 127.0.0.1 --configdb rs-conf1/127.0.0.1:27019
./mongos --logpath logs/mongos2.log --port 27021 --fork --bind_ip 127.0.0.1 --configdb rs-conf1/127.0.0.1:27019
mongo --port 27020
use admin
sh.addShard("rs-shard1/127.0.0.1:27017")
sh.addShard("rs-shard2/127.0.0.1:27018")
sh.status()
use crm
sh.enableSharding("crm");
sh.shardCollection("crm.user", {"name": "hashed"});
db.user.insert({name:"py"})
for(i=2;i<=100;i++){db.user.insertOne({_id:i,"name":"go"+i})};
db.info.count()
exit
mongo --quiet --port 27020 crm --eval 'db.user.count()'
mongo --quiet --port 27021 crm --eval 'db.user.count()'
mongo --quiet --port 27017 crm --eval 'db.user.count()'
mongo --quiet --port 27018 crm --eval 'db.user.count()'
mongo --quiet --port 27020 crm --eval 'db.user.find().forEach(printjson)'