码迷,mamicode.com
首页 > 数据库 > 详细

mongodb基本操作

时间:2018-04-04 12:52:51      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:mongodb

mongodb基本操作


数据库操作

1.数据库链接


mongo 172.17.165.245:27017 -uadmin -padmin

2.数据库登录


use kanfa 数据库名称
db.auth('admin','admin') 通过创建的用户登陆  执行后返回1 代表登陆成功 返回0 代表登陆失败
1

3.查看所有数据库


show dbs

4.删除数据库


> use new10  #选中数据库
switched to db new10
> db.dropDatabase()  进行删除
{ "dropped" : "new10", "ok" : 1 }

集合操作

1.查看所有集合


show collections

2.创建集合


创建集合(带初始化参数)

capped:类型为boolean,如果为true则为创建一个固定大小的集合,当集合中的数据条目达到最大时自动覆盖以前的条目。
autoIndexID:类型为boolean,默认为false,如果设置为true,则会在_id上创建索引。
size:指定集合字节最大值,当capped为true时需要指定。单位为byte
max:指定集合中数据的最大条数。
db.createCollection(
   "BizUser",
   {capped:1,autoIndexID:1,size:6142800,max:10000}
)

>use test
switched to db test
>db.createCollection("mycollection")
{ "ok" : 1 }

3.查看集合


> db.site.find()
{ "_id" : ObjectId("598bff0fa3d24b5fa31de2dd"), "_created" : ISODate("2017-08-10T06:37:03.084Z"), "_modified" : ISODate("2017-08-10T06:37:03.084Z"), "name" : "中国裁判文书网", "table_name" : "", "stat" : 1 }
{ "_id" : ObjectId("599261e8ec1d26149c8be16b"), "_created" : ISODate("2017-08-15T02:52:24.241Z"), "_modified" : ISODate("2017-08-15T02:52:24.241Z"), "name" : "人民法院诉讼资产网", "table_name" : "", "stat" : 1 }
{ "_id" : ObjectId("59b1f9e6758c6d23c9b4f4bf"), "_created" : ISODate("2017-09-08T02:01:10.380Z"), "_modified" : ISODate("2017-09-08T02:01:10.380Z"), "name" : "头条寻人", "table_name" : "", "stat" : 1 }
{ "_id" : ObjectId("59b647a4758c6d689c2ee835"), "_created" : ISODate("2017-09-11T08:21:56.824Z"), "_modified" : ISODate("2017-09-11T08:21:56.824Z"), "name" : "无讼网", "table_name" : "", "stat" : 0 }
{ "_id" : ObjectId("59c9e662758c6d75d554fbf3"), "_created" : ISODate("2017-09-26T05:32:18.503Z"), "_modified" : ISODate("2017-09-26T05:32:18.503Z"),

4.删除集合


接着删除集合 mycol2 :
>db.mycol2.drop()
true

5.添加与修改操作

向集合中插入数据,insert与save都是向集合汇总插入数据。如果新增的数据中有主键,并且重复,则使用insert会报错,但是save会更改原来的数据。下面代码是向BizUser集合中插入数据的示例


db.BizUser.insert([{name:"user1",password:"123456"},{name:"user2",password:"123"}])
db.BizUser.save([{name:"user1",password:"123456"},{name:"user2",password:"123"}])

也可以先定义文档再往集合中插入


user1=({name:"user1",password:"111"})
db.BizUser.insert(user1)

更新文档,下面代码是把name为user1的第一条文档更新为{name:”cx”,age:22}


db.BizUser.update({name:"user1"},{name:"cx",age:22})

如果只是需要设置文档里的指定的一些域的值,则需要加$set关键字,下面代码是把name为user1的第一条文档的age值更更新为22,sex的值更新为”M”


db.BizUser.update({name:"user1"},{$set:{age:22,sex:"M"}})

如果是要更新所有符合查询条件的文档,则需要加上multi:true,下面代码是把所有age为22的文档中的age的值改为23


db.BizUser.update({age:"22"},{$set:{age:23}})

6.查询操作

查看集合下的数据,不带任何参数则默认返回所有的数据


db.BizUser.find()

使用pretty()方法使显示的结果更美观


db.BizUser.find().pretty()

查询中的AND,在find()中传入多个键值对时,即会当作AND查询处理。下面代码是在BizUser集合中查找age为18并且sex为“M”的数据


db.BizUser.find({age:"18",sex:"M"})

查询中的OR,M哦能够DB中,OR查询语句以$or作为关键词。下面代码是在BizUser集合中查找age为18或者age为19的数据


db.BizUser.find(
   {
       $or:[
           {age:"18"},
           {age:"19"}
       ]
   }
)

同时使用AND和OR,下面代码是在BizUser集合中查找sex为“F”,并且age大于30或者name等于user1的数据。 表示大于、lt表示小于、表示小于等于、ge表示大于等于、$ne表示不等于)


db.BizUser.find(
   {
       sex:"F",
       $or:[
           {age:{$gt:30}},
           {name:"user1"}
       ]
   }
)

7.条件操作符1


- $gt表示大于
- $lt表示小于
- $ge表示大于等于
- $le表示小于等于
- $ne表示不等于

db.BizUser.find({age:{$le:22}})

8.条件操作符2($type)


type的值:

- 1-双精度
- 2-字符串
- 3-对象
- 4-数组
- 5-二进制数据
- 7-对象ID
- 8-布尔类型
- 9-数据
- 10-空
- 11-正则表达式
- 13-JS代码
- 14-符号
- 15-有作用域的JS代码
- 16-32位整型数
- 17-时间戳
- 18-64位整型数
- 255-Min key
- 127-Max key

下面代码是查询name的类型为字符串的数据


db.BizUser.find({name:{$type:2}})

limit读取指定数量的数据记录,下面代码是读取BizUser集合中前10条记录


db.BizUser.find().limit(10)

skip读取时跳过指定数量的数据记录,下面代码是读取BizUser集合中第6条到第15条记录


db.BizUser.find().limit(10).skip(5)

sort对查询的结果进行排序,下面代码是读取BizUser集合中的数据,并按照age进行升序排序

  • 1表示升序

  • -1表示降序


db.BizUser.find().sort({"age":1})


用户操作

1.查看用户信息


db.runCommand({usersInfo:"kanfa"}) usersInfo:用户名称

2.创建只读用户


use kanfa    #需要给创建用户的数据库
db.createUser(
 {
   user: "admin",  #用户名
   pwd: "admin",  #密码
   roles: [ { role: "read", db: "kanfa" } ]
 }
)
#role  权限    db 指的数据库
权限类型readWrite 读写、 read 读

3.修改用户密码


use admin  
db.changeUserPassword("username", "xxx")

4.修改用户权限


#授予角色:db.grantRolesToUser( "userName" , [ { role: "<role>", db: "<database>" } ])
db.grantRolesToUser( "myuser" , [ { role: "dbOwner", db: "mydb" } ])


#取消角色:db.grantRolesToUser( "userName" , [ { role: "<role>", db: "<database>" } ])
db.revokeRolesFromUser( "myuser" , [ { role: "readWrite", db: "mydb" } ])
</database></role></database></role>



mongodb 数据库备份还原与导入导出

备份数据库

mongodump -h 172.17.165.227:27017 -ukanfa -d  -o  /data/mongodb --authenticationDatabase=kanfa -h:指明数据库宿主机的IP -u:指明数据库的用户名 -p:指明数据库的密码 -d:指明数据库的名字 -c:指明collection的名字 -f:指明要导出那些列 -o:指明到要导出的文件名 -q:指明导出数据的过滤条件 --authenticationDatabase=kanfa   当前数据库开启auth 认证的用户

还原数据库

mongorestore -h 172.17.165.245 --port 27017 -uadmin  -d kanfa   kanfa --authenticationDatabase=admin -u:指明数据库的用户名 -p:指明数据库的密码 -d:指明数据库的名字 -c:指明collection的名字  authenticationDatabase=admin 当前数据库开启auth 认证的用户

导出数据

mongoexport -h 172.17.165.227:27017 -uadmin --authenticationDatabase admin -d kanfa -c site_content  --limit  300  -o  site_content.bat -h:指明数据库宿主机的IP -u:指明数据库的用户名 -p:指明数据库的密码 -d:指明数据库的名字 -c:指明collection的名字 -f:指明要导出那些列 -o:指明到要导出的文件名 -q:指明导出数据的过滤条件 --limit  300  指定数据输出300行(文件太大可以使用)

导入数据

mongoimport -h 172.17.165.245 --port 27017 -uadmin -padmin -d kanfa   -c site_content  site_content.bat  --authenticationDatabase=admin  导入命令选项说明:   -h:指明数据库宿主机的IP -u:指明数据库的用户名 -p:指明数据库的密码 -d:指明数据库的名字 -c:指明collection的名字 -f:指明要导入那些列


参考文档:

https://blog.csdn.net/a25115/article/details/40862293

https://docs.mongodb.com/manual/reference/program/mongoexport/



mongodb基本操作

标签:mongodb

原文地址:http://blog.51cto.com/innocence/2094618

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!