MongoDB 入门

语法类似于javascript面向对象的查询语言,它是一个面向集合的,模式自由的文档型数据库。
MongoDB 于 mysql
缺点:不支持连表查询,不支持sql语句,不支持事务存储过程,所以不适合存储数据间比较复杂的数据,一般主要当做数据仓库来使用。
适用 日志系统 股票等
不适用于 电子商务系统等需要多表查询的功能
基本概念

1 文档
文档是mongodb中数据的基本单元,多个键值对有序的放置在一起就是文档
mongodb区分大小写数据类型 每一个文档尺寸不能超过16M
2 集合
集合就是一组文档,多个文档组成一个集合,集合类似于mysql中的表
无模式是指 在一个集合中可以包含不同格式的文档
mysql需要先建表再插数据 nosql不需要
模式自由 :意思就是集合里面没有行和列的概念
mongodb中的集合不用创建,没有结构,所以可以放不同格式的文档
3 数据库
多个集合可以组成数据库。一个mongodb实例可以承载多个数据库。

一个数据库中可以有多个集合
一个集合中可以有多个文档

use dbname 有则使用 没有则创建 如果是空的没有 使用 会自动删除
show dbs
show tables
db.php.insert({}) php为集合名称 隐式创建
db.php.find() 查询所有
db.php.findOne() . 查询第一个文档
db.php.drop() 删除集合
db.dropDatabase() 删除数据库

help 全局 帮助
db.help 数据库帮助
db.php.help 集合帮助

4 增删改查
1)添加文档
文档就是键值对,数据类型是BSON格式 支持的值更加丰富
db.php.insert({‘name’:‘xiaowang’,‘age’:‘10’})

在每个添加的文档有一个唯一的_id字段
每个文档都有一个_id字段,并且同一集合中的_id值唯一,默认是ObjectId对象
可以自己定义_id,但是必须唯一 不然会报错

支持js代码 批量插入

2)删除文档
dp.php.remove({条件})
删除php集合中年龄大于7的文档
常用操作符:
$lt <
$lte <=
$gt >
$gte >=
$ne <>
$in
$nin
$or
$not
$mod 取模
$exists
KaTeX parse error: Expected '}', got 'EOF' at end of input: ….remove({age:{'gt’:7}})

3)更新文档
方法1:直接修改
语法:dp.php.update({条件},{新文档})
语法:dp.集合.update(条件,新文档,是否新增,是否修改多条)
是否新增:如果是 1 则没有满足条件的则新增
是否修改多条:如果是1 满足条件的都要修改
例:在集合php中修改 age=4的文档名称为小王
db.php.update({age:4},{name:"xiaowang}})

方法二:使用修改器
$inc: 加一个数字
KaTeX parse error: Expected '}', got 'EOF' at end of input: …date({age:3},{'set’ :{name:‘xiaozi’}})
db.php.update({age:3},{’$inc’ :{age:10}})

4)查询文档
db.php.find({条件})
db.php.findOne({条件})

db.php.find({age:{’$gt’:2}})

db.php.find({},{age:1}) //条件可以为空 ,1表示只显示age键
db.php.find({},{age:0}) //条件可以为空 ,0表示除age外都显示

根据年龄升降序排列
db.find().sort({age:1}) //升序
db.find().sort({age:0}) //降序

db.find().limit(3) //只显示前三个

db.find().skip(2).limit(3)//跨过两个文档 取三个 则意味 3-5

db.php.count() //统计集合中的文档

5 用户管理
权限概念:用户是属于数据库的,每个数据库都有自己的管理员,管理员登录后,只能操作所属的数据库。

创建用户
1 选择数据库
use 数据库名称
2 添加用户
db.addUser(用户名,密码,是否只读)

6 mongodb中的索引
6.1 普通单列索引
没有索引:

为name添加索引
db.java.ensureIndex({name:1}) //1为正序索引 -1是降序
db.集合名.ensureIndex({键名:1})

6.2 复合索引
db.集合名.ensureIndex({键名1:1/-1,键名2:1/-1})

6.3 子文档索引

db.集合名.ensureIndex({filed.subfield:1/-1})

6.4 唯一索引
db.php.ensureIndex({name:‘dasd’},{unique:true})

6.5 查看索引
db.集合名.getindexes() //查看创建了的索引
查看当前查询用到的索引 和查询数据的状态信息
db.集合名.find({name:‘xiao’}).explain()

6.6 删除索引
删除单个索引
db.php.dropIndex({name:1})
删除全部索引
db.php.dropIndexes()
6.7 重建索引
db.php.reIndex()

创建索引的时候,1是正序创建 -1 是倒叙创建
索引的创建在提高查询性能的同时,会影响插入性能,对于经常查询少插入的可以考虑用索引
复合索引要注意索引的先后顺序
每个键全建立索引,不一定能提高性能,索引不是万能的
在做排序工作时,如果是超大的数据量,可以考虑加上索引来提高排序的性能

7 主从复制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 内容概要 《计算机网络》文档包含了70个关于计算机网络基础知识的单项选择题,内容涉及互联网起源、网络协议、IP地址、DNS服务、电子邮件、网络拓扑结构、网络设备、网络连接方式、网络速度等多个方面。每个问题后面都提供了正确答案,适合作为学习和测试材料。 ### 适用人群 本文档适合以下人群: - 计算机科学与技术、信息技术、网络工程等专业的在校学生。 - 准备计算机网络相关考试或认证的专业人士。 - 对计算机网络基础知识感兴趣的自学者。 - 信息技术教师,作为教学资源或测试材料。 ### 使用场景及目标 1. **学习测试**:作为学生学习计算机网络理论知识后的测试工具,检验学习效果。 2. **教学辅助**:教师可以用于课堂教学,作为课后作业或课堂小测验,增强学生的理解和记忆。 3. **自学检验**:个人自学者可以通过这些题目检验自己对计算机网络基础知识的掌握程度。 4. **职业发展**:职场人士可以通过学习和测试,提升自己在计算机网络领域的专业能力。 5. **竞赛准备**:适合准备计算机网络相关竞赛的学生,作为强化训练材料。 文档的目标是通过这些精心设计的题目,帮助读者全面了解和掌握计算机网络的基本概念、原理和应用,提高解决实际问题的能力。通过学习和练习,读者将能够更加深入地理解计算机网络的工作原理,为进一步的专业学习或职业发展打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值