Mongodb日常使用命令

1,连接

# mongo 192.168.0.214:27017
# mongodb://admin:123456@localhost/test                                                                   #admin用户用密码123456登录到test库
# mongodb://admin:123456@localhost:27017,localhost:27018,localhost:27019             #连接到三个副本集的服务器
# mongodb://admin:123456@host1,host2,host3/?slaveOk=true                              #连接到三个副本集的服务器,写入操作在主库,查询分布到从库
# mongodb://host1,host2,host3/?safe=true;w=2;wtimeoutMS=2000                    #以安全模式连接到replica set,并且等待至少两个复制服务器成功写入,超时时间设置为2秒

2,创建用户,修改权限

>db.createUser({user: "test",pwd: "123456",roles: [ { role: "dbOwner", db: "coinsuper_whitebox" }]})      #最常用的这条,dbowner可以在自己的库里做任意操作
>db.createUser({user:"usertest",pwd:"passtest",roles:[  {role:"clusterAdmin", db:"admin" }, {role:"readAnyDatabase",db:"admin" }, {role:"readWrite",db:"testDB" } ]})
>db.updateUser("usertest",{roles:[ {role:"read",db:"coinsuper_whitebox"} ]})                     #修改为只读权限

> use coinsuper_whitebox
>db.addUser("test2","123456")                            #配置读写用户
>db.addUser("test2","123456",true)                #配置只读用户

3,创建集合:

> use coinsuper_whitebox
>show collections
>db.auth("test","123456")
>db.tt.insert({_id:1,name:"test"})                      #这样会自动创建集合
>db.createCollection("Account")                        #也可以这样创建集合
>db.createCollection("Test",{capped:true, size:10000}) { "ok" : 1 }
size:在建表之初就指定一定的空间大小,接下来的插入操作会不断地按顺序APPEND数据在这个预分配好空间的文件中,如果已经超出空间大小,则回到文件头覆盖原来的数据继续插入。这种结构保证了插入和查询的高效性,它不允许删除单个记录,更新的也有限制:不能超过原有记录的大小。这种表效率很高,它适用于一些暂时保存数据的场合,比如网站中登录用户的session信息,又比如一些程序的监控日志,都是属于过了一定的时间就可以被覆盖的数据。
capped:true,表示该集合的结构不能被修改;

4,修改表名

> db.Account.renameCollection("Account1")
>db.Account.help()                       #查看帮助

5,查询

> db.Account.findOne()                #查一条记录
> DBQuery.shellBatchSize = 100               #设置每页显示100条记录,默认为20条,输入it可以显示下一页。
> db.Account.distinct("UserName")                                          #查询聚集中字段的不同记录
> db.Account.find({"UserName":/^keyword/})                        #查询聚集中UserName以"keyword" 开头的记录
> db.Account.find({},{"UserName":1,"Email":1})                #查询username和email两列
> db.Account.find({},{"UserName":0})                                 #查询聚集中排除指定列
> db.Account.find({"Age":{"$gt":20}},{"UserName":1})        #select username where age>20
> db.Account.find().sort({"UserName":1})                             #username:1表示升序排列,username:-1 表示将序排列
> db.Account.find().count()
> db.Account.find({"Age":{"$gt":20}}).count()                    #统计age大于20的记录有多少
> db.Account.find({"UserName":{"$exists":true}}).count()         #select count(UserName)
> db.Account.find().skip(10).limit(5)                                                    #查询集合中第10条记录以后的5条记录

6,修改

> db.Account.insert({AccountID:2,UserName:"lb",Password:"1",Age:25,Email:"libing@163.com",RegisterDate:"2011-06-09 16:36:95"})           #添加新记录
> db.Account.update({"AccountID":1},{"$set":{"Age":27,"Email":"libingql@163.com"}})                 #修改记录
> db.Account.update({"AccountID":1},{"$inc":{"Age":1}})           
> db.Account.remove({"UserName":"libing"})
> db.Account.remove({"Age":{$lt:20}})
> db.Account.remove()                      #全部删除

7,删除

>db.dropuser('test')     
>use coinsuper_whitebox
>db.dropDatabase()
上一篇:A CLOSER LOOK AT FEW-SHOT CLASSIFICATION


下一篇:《现代体系结构上的UNIX系统:内核程序员的对称多处理和缓存技术(修订版)》——2.2 高速缓存基本原理