mongodb

《别out了!还不知非关系型数据库----mongodb视频》 

MongoDB教程  http://www.mongodb.org.cn/tutorial/ 

    

1、官网下载 对应的版本,  mongodb-win32-x86_64-2008plus-ssl-3.4.6-signed.msi

2、傻瓜式安装 。  本人安装在 D:\wamp\mongodb  安装好后,D:\wamp\mongodb\data\db 在里面建多两层文件夹

   到bin目录下面 管理员权限运行cmd命令  mongod.exe --install --dbpath D:\wamp\mongodb\data\db --logpath D:\wamp\mongodb\data\log.txt

    ==》

3、启动 

D:\wamp\mongodb\bin>net start mongodb
请求的服务已经启动。

4、链接数据库  D:\wamp\mongodb\bin>mongo 127.0.0.1:27017

  

 5、查看数据库 > show databases 或  用 show dbs

    

 

   

基本操作命令

a 在线手册

http://www.runoob.com/mongodb/mongodb-tutorial.html

 

  b 查看已有的数据库

语法: show dbs  或者 show databaes(mysql一样);

  

 c 选择数据库

use 数据库名(mysql一致)

   

删除数据库

 use 数据库

db.dropDatabase();

 

6 集合的操作

a 查看当前数据库已有的集合(相当于mysql的表)

语法: show collections(推荐使用)  或者  show tables(mysql的兼容)

当使用这个命令时,要选择一个数据库

   

使用mongodb特有的命令

b  集合的创建

语法:db.createCollection(‘集合名’);   # 注意集合这个单词的首字母大写

注意:如果use了一个不存在的数据库,我们依旧可以在里面创建集合.

use一个不存在的数据库时就会自动创建.

  

  

c 集合()的删除

语法:db.集合名.drop();

 

 

 

 

 

实现数据(文档)crud

 1) C 数据的增加

语法:db.集合名.insert(json数据);

    json数据  {key1:value1,key2:value2}

 

 

     说明:插入记录成功之后,mongodb会默认为每一个文档都添加一个_id的字段,并且 同一集合中的_id是唯一的.

思考:一次性插入多条数据.

语法格式:db.goods.insert([{},{},{}]);

js中索引数组形式插入多条数据

 

 

 

 2) R

语法:db.集合名.find(查询条件,查询的列)

:db.goods.find()    #查询集合中所有的记录

 

   db.goods.find({name:feng})  #查询集合中名字叫feng的记录

 

第一个参数查询条件相当于MySQL中的where条件

第二个参数查询列格式说明:

{age:1}     #表示仅返回年龄

db.goods.find({"name":"feng"},{"age":1});

{age:0}     #返回除了年龄意外其他数据

 

 

db.goods.find({"name":"feng"},{"age":0});

 

{age:1,name:1}  # 只返回年龄与姓名

 

3)R

 

语法:db.集合名.remove(query,justOne);

 参数说明:query查询表达式是一个json数据(sql中的where相似)

:删除键名为’李世民’的数据:db.test.remove({name:”李世民”});

justOne:true/false 是否只删除1.默认为false(相当于sql中的limit)

一次只删一条数据

 

 

一次性删除两条数据,remove的第二个参数设置为FALSE

 

 

4) U

语法:db.集合名.update(条件,数据,[是否新增默认false],[是否修改多条默认false]).

  参数说明 :

  参数3 :修改的数据不存在则自动添加,默认false,不添加

  参数4:是否修改所有符合条件的数据,默认值修改一条.

a 创建测试数据

db.createCollection("test1");

for(var i = 1; i<= 10; i++){

    db.test1.insert( {"name":"zs"+i,"age":i} );

}

实际的操作:

 

 

 

 

b 修改器的使用

1:

{name:zs1}修改为{name:zs2}

 

问题:我们只想修改名字.但是年龄被删除了.

2:

a如何解决例1中的数据替换问题?

办法:使用修改器.

语法:db.集合名.update({条件},{修改器名称:{修改的键:修改的值}});

 

2:通过修改器将zs3的年龄修改为33

db.test1.update({name:zs1},{$set:{age:33}});

 

说明:修改器名称的引号可加可不加,在这里统一必须要加.

2: zs10的年龄增加两岁.

db.test1.update({name:zs10},{$inc”:{age,2}});

 

c 测试新增(第三个参数的使用)

当我们再修改数据时,如果没有符合条件的.就直接新增加一条数据.

 

 

d 测试一次修改多条(第四个参数的使用)

如果一次性有多条数据满足要求.那么设为TRUE.就全部修改

:zs2name修改为250

 查询数据:

  

  

  

  

  

 

 6、主从服务器,数据同步:

           

 

  

  

     

  

  

 

 

 

  

 

 

概念: 
表----collection, BSON——binary json 
启动:mongod -dbpath=/var/db --rest --auth &  --rest启动http api --auth启动包含用户认证(不加则不认证) 基本命令: 
连接数据库mongo -uroot -proot admin  
show dbs 显示数据库名  show collections 显示数据库中集合 
show users 吸纳时当前数据库 用户  show profile 吸纳时最后系统用时
>1ms的概要 use 切换数据库(没有数据库时会先建立)  db.help() db.test.help() 显示帮助,显示命令帮助。 
db.createCollection("
user");新建user 集合。  db.user.insert({uid:1,username:"jason.sz",age:30});插入一行数据 
db.user.find();查询数据  db.user.update({uid:1},{$set:{age:25}});更新数据 
db.dropDatabase() 删除库 需先use 到该数据库 权限管理: 
1,mongodb是没有默认管理员账号,要先添加管理员账号,在开启权限认证。 
2,切换到admin数据库,添加的账号才是管理员账号。 
3,用户只能在用户所在数据库登录,包括管理员账号。 

 

4,管理员可以管理所有数据库,但是不能直接管理其他数据库,要先在admin数据库认证后才可以。 
安装完成时无用户,需要先添加添加管理员用户(不加--auth启动) 
use adimin 
db.addUser("root","root") 关键字写法记住是驼峰式 
db.addUser("test","test",true)建立只读用户 
验证用户db.auth("root","root")返回1 认证成功 
添加普通数据库用户 
用管理员帐号use test  db.addUser("test","1234") 
数据导入导出: 
mongoexport -u test -p test -d test -user -user.dat 参数-d dbname -c collection 
name -o output location 还可以制定格式导出--cvs --jsonArray -f指定导入字段 
mongodump -d test -/root/tmp 库表级备份 
mongorestore  访问控制: 
--bind_ip 192.168.1.1 只允许192.168.1.1访问 
--port 制定端口 默认的是27017 
设置权限 

 

 

 

 

 

 

 

  

  

  

 

posted @ 2017-08-05 22:36  海蓝7  阅读(157)  评论(0编辑  收藏  举报