美文网首页我爱编程
mongodb简单介绍和使用

mongodb简单介绍和使用

作者: 8d2855a6c5d0 | 来源:发表于2017-08-03 20:22 被阅读0次

一、简介

Mongodb是一种数据库,nosql(not only sql),不仅仅sql。Nosql叫做非关系型数据库。
关系型数据库:mysql(sun公司(java的),oracle[甲骨文]),oracle(甲骨文公司),mariadb(mysql的一个分支),DB2(IBM[蓝色巨人]),sqlserver(c#,微软.net开发平台),sqlite(手机用的)
同为Nosql的产品:redis(key-vlaue,登录list双向链表,set集合合并(好友,朋友圈,共同的好友[交集])),memcache(key=>value缓存服务).

Mongodb适合大数据量的信息,丢失率相对就高,就存储一些相对于不太重要的信息,例如:微博的评论,淘宝的评论,网站流量的统计

二、安装及其使用

2.1安装服务

软件开发里,一般情况下分为:c/s,b/s,统称都分为:客户端,服务端。
Mongodb也分为两端:
(1)服务器端 mongod.exe
(2)客户端 mongo.exe

使用管理员权限模式cmd

创建数据库存放目录,及其日志存放文件

mongod.exe  --dbpath=d:/mysoftware/mongo/db/ --logpath=d:/mysoftware/mongo/log.txt  --install

查看mongodb服务


使用客户端连接

2.2简单操作

Mysql 先得去创建一个库,然后创建一个表,设计字段
Mongodb ‘无状态模式’,不用去设计,直接用,存什么东西,取决于前边传后边存什么。
(1)获取当前数据库名称
db.getName()

(2)创建数据库
use 数据库名 当这个数据库不存在时就创建一个

(3)查看数据库
db.stats()

(4)简单运算

(5)查看数据库相关帮助信息

  • db.help()

2.3、写入数据

2.3.1普通数据的添加
Json格式 、Bson格式、类json格式
示例:

db.goods.insert({name:'huawei01',price:1000,weight:135,number:35})

插入多条数据

2.3.2多维数据对象添加
示例:

db.goods.insert({name:'xiaomi5',price:1999,weight:156,number:45,area:{province:'beijing',city:'beijing'}})

2.3.3数组信息的添加
示例:

db.goods.insert({name:'xiaomimax',price:2000,weight:180,number:100,area:{province:'beijing',city:'beijing'},color:['blank','white','red']})

2.4数据查询

2.4.1笼统方式查询

db.数据表.find() //查询数据表的全部数据

db.数据表.findOne() //查询数据表的第一条数据

2.4.2条件限制查询

条件:Bson对象
例如:db.goods.find({name:huawei01}) 查询name=huawei01的记录信息
(类似 select * from 表名 where name=’huawei01’)

db.数据表.find(条件)

db.数据表.findOne(条件)

返回满足结果里的第一条信息

该_id字段的内容值 是mongodb本身算法获得出来的,该_id对应的值信息在”全球唯一”
相当于mysql表里的主键id,是唯一的。
好处:mongo的数据做升级、迁移比较方便
该_id可以自行设置,但是不推荐

2.4.3范围条件查询
关键字:$gt $lt $gte $lte
mysql关键字: > < >= <=
查询价格大于1005元的商品

db.goods.find({price:{'$gt':1005}})

注意:

  • 关键字$gt左右必须有引号,单双都可以
  • 命令行:单双引号都可以
  • php:只能使用单引号

(1)大于

(2)大于等于

(3)小于

(4)小于等于

2.4.4设置多个查询条件
相当于mysql里面的and条件操作

db.数据表.find({条件,条件,条件})

例如:要求价格大于1000并且 重量小于100的

db.goods.find({price:{‘$gt’:1000},weight:{‘$lt’:100}})

或者通过严格等于的条件进行查询复合查询

例如:价格大于1000,并且重量等于50

db.goods.find({price:{'$gt':1000},weight:50})

2.4.5多维字段的查询

db.表.find({‘key.name’:值})

db.表.find({key.name:{‘$gt’:值}})

db.表.find({key.name:{‘$gt’:值},key2.name2:{‘$lt’:值}})

2.4.6数组条件的限制

db.表.find({字段(数组):val}) //数组元素值 有 val 即可(存在一个元素)

列如:db.goods.find({color:'red'})   //查询颜色有红色记录条数,满足一个元素即可

db.表.find({字段(数组):{‘$all’:[v1,v2]}})
//数组元素值 存在 v1和v2 即可(v1,v2顺序不做要求)(存在多个元素)

列如:db.goods.find({color:{‘$all’:[‘green’,’blank’]}})    //同时有黑色和绿色

同时满足黑色和红色

2.4.7限制查询字段
我们刚才的查询,是显示的所有的信息字段,但是呢,实际情况操作中,我们不一定全部都用到,那么可以就需要做一个字段输出查询的一个限制。如果全部取出来的话,对于内存和带宽都一定影响,我们按需去操作就可以了。

db.表.find({条件},{字段:1/0,字段:1/0});

  • 1: 查询此字段
  • 0: 排除此字段

规则:
就是要输出就全部输出,要不输出就全部不输出。_id除外,可以随意设置0,1

设置为全部输出



设置为全部不输出

一个0一个1报错:
要是0都是0,要是1都是1

2.4.8 $or查询,多个条件,满足其一即可

db.goods.find({'$or':[{price:2000},{num:{'$lt':100}}]})

2.4.9升序降序排列

db.p.find().sort({_id:1});//升序排列
db.p.find().sort({_id:-1});//降序排列
db.p.find().skip(1).limit(1)//跳过一条数据,限制显示一条数据,可以用来做分页

2.5修改数据

db.表.update({条件},{‘$set’:{字段:值,字段:值......}})

db.表.update({条件},{字段:值,字段:值......})

① 有$set的修改:只修改设置的字段,其他字段不变化

② 没有$set的修改:只修改设置的字段,没有修改的字段就删除了(除了_id字段)

(字段有则直接修改,没有则添加为新字段)

数组的更新

 db.p.update({name:"allen"},{$push:{bwn:{$each:[10,20]}}})//在bwn中插入数组中的每个数
{ "_id" : ObjectId("598bf1125a3d053771d84c0a"), "name" : "allen", "bwn" : [ { "b" : 80 }, { "w" : 70 }, { "h" : 60 }, 10, 20  ] }
 db.p.update({name:"allen"},{$push:{bwn:[10,20]}})//在bwn中插入了数组
{ "_id" : ObjectId("598bf1125a3d053771d84c0a"), "name" : "allen", "bwn" : [ { "b" : 80 }, { "w" : 70 }, { "h" : 60 }, [ 10, 20 ] ] }

2.6删除数据

(1)删除记录 db.表.remove(条件)

(2)删除字段 db.表.update({条件},{‘$unset’:{字段:1/字段:0}})

(3)删库跑路

db.dropDatabase()

三、账号权限

3.1创建三个权限账号

账号:
① “root:root 管理员账号(admin数据库) 可以 读、写
② “xiaohong:1234” 普通账号(php49数据库) 可以读,因为xiaohong是领导,只需查看就可以,不需要进行写操作
③ “xiaoming:1234” 普通账号(php49数据库) 可以读、写
权限说明:
普通账号:只能操作本身数据库
管理员账号:可以操作全部的数据库
第一步:
使用use admin数据库,创建root管理员账号


创建普通用户

3.2重启服务

关闭服务

做卸载服务
需要使用管理员权限的cmd
重新加入--auth权限参数,进行重新加入服务,重新启动mongodb服务

mongod.exe  --dbpath=d:/mysoftware/mongo/db/ --logpath=d:/mysoftware/mongo/log.txt  --remove

3.3操作mongodb查看

没有权限查看了

登录成功

Xiaohong具有读权限


Xiaohong没有写权限



退出用户登录


Xiaoming具有写权限

相关文章

网友评论

    本文标题:mongodb简单介绍和使用

    本文链接:https://www.haomeiwen.com/subject/hgbulxtx.html