《别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
设置权限