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()