数据导入导出
导出单个集合
mongoexport -d some_db -u xxx -p xxx -c some_collection -o some_collection.js --pretty
导入单个集合
mongoimport --drop -d some_db -u xxx -p xxx -c some_collection some_collection.js
全库备份
mongodump -o /opt/mongodb_data
导出数据库
mongodump -d some_db -u xxx -p xxx -o /opt/mongodb_data
导入数据库
mongorestore --drop -d some_db -u xxx -p xxx --dir /opt/mongodb_data/some_db
导入json文件
mongo some_db -u xxx -p xxx < test.js
注意:json文件换行格式需要是linux格式的
用户管理
创建管理员
db.createUser(
{
user: "root"
pwd: "abc123"
roles: [{ role: "userAdminAnyDatabase", db: "admin"}, "readWriteAnyDatabase"]
}
)
创建普通用户
db.createUser(
{
user: "test"
pwd: "xyz123"
roles: [{ role: "dbOwner", db: "some_db"}]
}
)
修改用户密码
user some_db
db.changeUserPassword("user_name", "new_passwd")
修改用户角色
db.updateUser(
"user_name",
{roles: [{role: "dbOwner": db:"some_db"}]}
)
副本集常用操作
添加成员
rs.add({host: "mongodb4:27017", priority: 0, votes: 0})
为了避免新添加的成员在没准备好时参加选举,所以最好把priority和votes设置为0,使用re.status()查看新添加的成员状态是SECONDARY后,再修改它的priority和votes的值
var cfg = rs.conf()
cfg.members[4].priority = 1
cfg.members[4].votes = 1
re.reconfig(cfg)
移除副本集成员
- 停掉要移除的副本集成员进程
- 连接到副本集的primary,执行下面的语句
re.remove(“mongod3”)
查看同步状态
db.printReplicationInfo()
指定从哪个节点同步
re.syncFrom("mongodb4:27017")
查询操作
嵌入式文档使用正则表达式查询
db.some_collection.find("user.name": {$regex: "*zhangsan*"})
逻辑查询
db.inventory.find({ price : {$ne: 1.99, $exists: true}})
db.inventory.find({
$and: [
{ $or : [{ price : 0.99 }, { price: 1.99}]},
{ $or : [{ sale: true }, { qty: {$lt: 20}}]}
]
})
$not
db.inventory.find({item: {$not: /^p.*/}})
$or
db.inventory.find($or:[{quantity: {$lt:20}},{price: 10}])
查询一个字段多个值的情况用$in
db.inventory.find({quantity: {$in: [20, 50]}})