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时.就全部修改
例:把zs2的name修改为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 -c user -o user.dat 参数-d dbname -c collection name -o output location 还可以制定格式导出--cvs --jsonArray -f指定导入字段 mongodump -d test -o /root/tmp 库表级备份 mongorestore 访问控制: --bind_ip 192.168.1.1 只允许192.168.1.1访问 --port 制定端口 默认的是27017 设置权限