mongodb修改数据语句_MongoDB操作语句及注入

首发于安恒公众号

这几天读了一本《MongoDB权威指南》的动物书,简单了解了这类nosql(Not Only SQL)数据库的操作语句。书上的业务层面以及sql优化部分我就略过了。书上是2.x版本的MongoDB,部分语句已经废弃了,在踩坑后我把那些删掉了

Mongo的最大特点就是存储数据格式的多样化和反关系范式:相对于关系化数据库的”矩形”存储格式,Mongo可以存储任意的json格式数据,例如{'u': 'admin', 'pwd': '***'}。当然有利必定有弊,假如存储的是格式化的数据,如用户表这样每一行都是相同字段,那么每一行都需要存储一遍字段名,解决办法?字段名取短一点,就像我举得例子一样

反关系范式需要好好设计,根据读写比例,在数据冗余的数据引用之间做好平衡。比如用户表里的用户粉丝,我会这样设计:{'u': 'admin', 'e': 'x@x.cc', 'tel': '110', 'sex': 1, 'fs': [{'u': 'user1', 'sex': 1}, {...}]}。经常和用户一起查询出的粉丝信息内嵌入文档中(用户名,性别),避免跨表查询;而其余信息则使用用户引用查询(邮箱,电话)

核心思想

在MongoDB中,没有表、列的概念,取而代之的是集合(collection)、文档(document)库(DB):数据库,包含多个集合

当前数据库名存储在全局变量db中

admin库,库中用户有数据库所有权限,local库,不可复制,本地数据库,config库

集合(Collection):一组文档

以名称进行标识,不能为空字符串

不能以system.开头,不能使用字符$(特殊含义字符)

文档(Document):键值对的一个有序集,即有序的哈希表

键值不能有'\0'

不能存在.和$

区分类型("1"和1)与大小写

MongoDB内置JavaScript解释器,它的文档是JS中的对象({...}),就是那种没成员函数的对象

MongoDB运行于27017端口,且启动后会在28017端口启动一个基本的Http服务器。启动后会连接到test数据库,use [database]切换当前数据库

MongoDB以BSON格式保存数据,即Binary Json

CRUD操作

观察发现:MongoDB中的方法函数基本都是以JavaScript命名习惯的,即word1Word2Word3,如addEventListener

文档插入后会自动添加一个_id属性,为唯一标识符{"_id": ObjectId("56064886ade2f21f36b03134")}

Create

创建数据库

> use [newdbname]//不存在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值