MongoDB基础实践

边用边总结

基本操作

mongo连接

1
2
3
mongo --host 127.0.0.1 --port 27017

mongo "mongodb://127.0.0.1:27017"

升级操作

1
2
use admin
db.adminCommand( { setFeatureCompatibilityVersion: "4.0" } )

用户管理

启用用户认证必须修改配置文件/etc/mongod.conf为:并重启服务

1
2
security:
authorization : enabled
  • 创建管理员用户

    1
    2
    3
    4
    use admin
    db.createUser({ user: "admin", pwd: "passwd", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })
    db.auth("admin", "passwd")
    db.getUsers()
  • 创建备份用户

    1
    2
    use testdb
    db.createUser({ user: "backup", pwd: "passwd", roles: [{ role: "backup", db: "admin" }, { role: "restore", db: "admin" }] }) # role中的db必须为admin
  • 查看用户

    1
    2
    3
    4
    use admin
    db.system.users.find().pretty()
    use testdb
    show users
  • 修改用户密码

    1
    2
    use xxxdb;
    db.changeUserPassword('username','newpasswd');

开启/关闭监控

1
2
3
db.enableFreeMonitoring()
db.disableFreeMonitoring()

查询操作

1
2
3
show dbs;
db.getCollectionNames(); #show collections;
help

删除数据库

1
db.dropDatabase()

查询范例

1
2
3
4
5
6
db.getCollection('gd_event').aggregate([{$group:{_id:"$eid",count:{$sum:1}}},{ $match:{count:{$gt:1}}}])
类似sql:
select eid as _id,count(eid) as count from gd_event group by eid having count>1

两个条件或运算:
db.getCollection('gd_event_log').find({$or:[{"detail":{$regex:"冷月无声"}},{"info":{$regex:"冷月无声"}}]})

mongo查询包含

1
2
db.getCollection('cards').find({title:/scribe/})
db.getCollection('cards').find({title:/导航/})

mongo启用全文索引

1
2
> db.adminCommand( { setParameter : 1, textSearchEnabled : true } )
{ "was" : false, "ok" : 1 }
  • 默认是关闭的。否则会报错”err” : “text search not enabled”

索引语言支持

1
db.de.ensureIndex( {txt: "text"}, {default_language: "german"} )
  • 如果希望使用其他语言,需要在创建索引时指定要使用的语言。默认是支持英文的。

修改主从

1
2
3
4

use local
db.sources.find()
db.sources.remove( { "host": "旧IP:27017"} )

mongdb客户端工具

相关资料