MongoDB 学习笔记

数据库简介

什么是数据库?

数据库是存放数据的仓库。它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定规律的,否则查询的效率会很低。

数据库的种类:

  • 关系型:Oracle、MySQL、SQlite、SQL Server 等
  • 非关系型(Not Only SQL):MongoDB(文档)、Redis/Memcache(内存)

关系型数据库和非关系型数据库软件的区别:

  • 相同点:都是数据库软件,用来存放项目数据
  • 不同点:
    关系型:1、遵守 SQL 标准。2、有库和表约束。
    菲关系型:1、没有统一标准。2、一般按键值对形式存储。3、读取速度更快。

MongoDB 简介

基于分布式文件存储数据库,C++ 语言编写,支持的数据结构非常松散,是类似 json 的 bson 格式(后期修改插入数据写 JSON)

MongoDB 基本操作

基本概念

  • 生活中:仓库、架子、物品
  • 计算机:数据库(database)、集合(collection)、数据/文档(document)

查看数据库

语法:show dbs

选择数据库

语法:use 数据库名称
隐式创建:在 MongoDB 中选择不存在的数据库不会报错,后期当该数据库有数据时系统自动创建。

查看集合

语法:show collections

创建集合

语法:db.createCollection('集合名称')

删除集合

语法:db.集合名.drop()
返回布尔值

删除数据库

1、通过 use 语法选中数据库
2、通过 db.dropDatabase() 语法删除

MOngoDB 文档增删改查(CURD)

C增

语法:db.集合名.insert(JSON数据)

说明:集合存在,则直接插入数据;集合不存在,隐式创建

练习:在 test1 数据库的 c1 集合中插入数据(姓名:Tom,年龄:18岁)

use test1
db.c1.insert({name:"Tom", age:18})

数据库和集合不存在都隐式创建,对象的键统一不加引号方便看,但是查看集合数据时系统会自动添加引号。

MongoDB 会给每条数据增加一个唯一的 _id 键。
_id 的组成:
_id的组成
自定义 _id 值:给需要插入的 JSON 数据增加 _id 键即可覆盖(但不推荐)

db.c1.insert({_id:1,name:"Tom", age:18})

插入多条数据:传递数组,数组中写一个个 JSON 数据即可

db.c1.insert([
     {name:"Tom", age:18},
     {name:"Jack", age:18},
     {name:"Sookie", age:18}
])

快速插入10条数据:MongoDB 底层使用 JS 引擎实现,所以支持部分 JS 语法,可以使用 for 循环。

在 test1 数据库 c2 集合中插入10条数据,分别为 a1 a2 … a10

for (var i = 0, i < 10, i++) {
    db.c2.insert({usename:"a" + i,age:i})
}

for 循环式一条一条插入,前九条的提示看不到,最后一条提示可以出现。

R查

语法:db.集合名.find(条件 [,查询的列])

条件 写法
查询所有数据 {} 或者不写
查询 age = 6 的数据 {age: 6}
查询 age = 6 又要 sex = ‘男’ 的数据 {age: 6, sex: ‘男’}
查询的列(可选参数) 写法
查询全部列(字段) 不写
只显示 age 列(字段) {age: 1}
除了 age 列都显示 {age: 0}

不管你怎么写,系统自定义的 _id 都存在。

升级语法

db.集合名.find({键:{运算符:值}})
运算符 作用
$gt 大于
$gte 大于等于
$lt 小于
$lte 小于等于
$ne 不等于
$in in
$nin not in

如果你需要以易读的方式来读取数据,可以使用 pretty() 方法:

db.集合名.find().pretty()

pretty() 方法以格式化的方式来显示所有文档。

U改

语法:db.集合名.update(条件, 新数据 [, 是否新增, 是否修改多条])

  • 是否新增:指条件匹配不到数据则插入 true 是插入,false 不插入(默认)
  • 是否修改多条:指将匹配成功的数据都修改 true 是, false 否(默认)

练习1:将 {uname: “zs01”} 改为 {uname: “zs11”}

> db.c1.find()
{ "_id" : ObjectId("5f38cefdb762859e025bb2d7"), "name" : "Tom", "age" : 18 }
{ "_id" : ObjectId("5f3908f022e8660eba92139c"), "uname" : "zs01", "age" : 1 }
{ "_id" : ObjectId("5f3908f022e8660eba92139d"), "uname" : "zs11", "age" : 2 }
{ "_id" : ObjectId("5f3908f022e8660eba92139e"), "uname" : "zs21", "age" : 3 }
{ "_id" : ObjectId("5f3908f022e8660eba92139f"), "uname" : "zs31", "age" : 4 }
{ "_id" : ObjectId("5f3908f022e8660eba9213a0"), "uname" : "zs41", "age" : 5 }
{ "_id" : ObjectId("5f3908f022e8660eba9213a1"), "uname" : "zs51", "age" : 6 }
{ "_id" : ObjectId("5f3908f022e8660eba9213a2"), "uname" : "zs61", "age" : 7 }
{ "_id" : ObjectId("5f3908f022e8660eba9213a3"), "uname" : "zs71", "age" : 8 }
{ "_id" : ObjectId("5f3908f022e8660eba9213a4"), "uname" : "zs81", "age" : 9 }
{ "_id" : ObjectId("5f3908f022e8660eba9213a5"), "uname" : "zs91", "age" : 10 }
> db.c1.update({uname:"zs01"},{uname:"zs11"})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.c1.find()
{ "_id" : ObjectId("5f38cefdb762859e025bb2d7"), "name" : "Tom", "age" : 18 }
{ "_id" : ObjectId("5f3908f022e8660eba92139c"), "uname" : "zs11" }
{ "_id" : ObjectId("5f3908f022e8660eba92139d"), "uname" : "zs11", "age" : 2 }
{ "_id" : ObjectId("5f3908f022e8660eba92139e"), 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值