mongodb笔记


1.NoSQL 介绍

NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是 SQL”, 它指的是非关系型的数据库,是以 key-value形式存储,和传统的关系型数据库不一样, 不一定遵循传统数据库的一些基本要求,比如说遵循 SQL 标准、ACID 属性、表结构等等。 NoSQL 最早被提出是在 20 世纪 80 年代,在当时更多是强调的是与关系数据库区别对待, 最近这些年被提及的更多是强调协助解决大数据等相关问题。 NoSQL 在大数据时代有自己的意义。

2.NoSql 和传统数据库简单对比。

非结构型数据库。 没有行、列的概念。 用 JSON 来存储数据。(对于不会sql的人可以降低学习成本。)

3.MongoDb 介绍

MongoDB 是一个介于关系数据库和非关系数据库之间的产品, 是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似 json 的 bson 格式,因此可以存储比较复杂的数据类型。 Mongo 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言, 几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。它的特点是高性能、 易部署、易使用, 存储数据非常方便。

4.MongoDb 安装

官网下载: https://www.mongodb.com/
这里遇到的问题:无法安装图形化界面compass,安装失败。那我就不勾选安装咯,大不了用命令。

安装完成后配置环境变量将bin路径加入到系统的path 环境变量中。

打开 cmd 输入 : mongo命令看看是否成功。如果出来下图说明 mongodb配置成功。

5. 使用 MongoDb

(1)先新建一个存放数据库的文件夹, 注意:不能有中文和空格,建议不要放在 C 盘
(2)启动 MongoDb 服务
mongod 开启数据库服务命令: mongod --dbpath D:\mongodb

(3)客户端输入命令连接服务端:mongo

6.建库、建表、查、改、增、删

(1)命令:use person
如果person数据库存在,则进入数据库。
如果数据库未创建, 那么必须创建一个表并插入一个数据以来创建该数据库。
数据库中不能直接插入数据,只能往集合(collections)中插入数据。 不需要专门创建集合,只需要写点语法插入数据就会创建集合student:
db.student.insert({“name”:”xiaoming”})

(2)命令:show dbs,可以看到所有的数据库,包括刚才创建的person,前面三个是本来就有的。

(3)命令:show collections,查看数据库中的表。还是要先进入数据库,下图可看到刚才创建的student表。

(4)删除数据库与删除表:
删除当前所在的数据库:
db.dropDatabase()
删除指定的表: db.collections_name.drop()
db.student.drop()

(5)插入(增加) 数据:
db.表名.insert({"name":"zhangsan"})

(6)查询:先列这几条。
1、查询所有记录
db.student.find()
相当于: select* from student;

2、查询去掉后的当前聚集集合中的某列的重复数据
db.student.distinct("name")
会过滤掉 name 中的相同数据
相当于: select distict name from student;

3、查询 age = 22 的记录
db.student.find({"age": 22})
相当于: select * from student where age = 22。

4、匹配的数据的数量:count()
db.student.find({"age": 22}).count()

明天再写了。。。今天浪费了许多时间,很难受。。。

(7)修改数据
1.查找名字叫做小明的,把年龄更改为 16 岁:
db.student.update({"name":"xiaoming"},{$set:{"age":16}})

2.更改所有匹配项目:
默认下,update()只更改第一个匹配项,但在方法传入第三个参数为{multi: true}时,可更改所有匹配项。
db.student.update({"sex":"男"},{$set:{"age":33}},{multi: true})

3.完全替换, 不出现$set 关键字了: 注意

例:db.student.remove({"name": "xiaoming"});

(8)删除数据:
db.collectionsName.remove( { "borough": "Manhattan" } )
默认下,remove()会删除所有的匹配项。可传入第二个参数{justOne: true}来只删除第一个匹配项。

db.student.remove( { "age": 18}, { justOne: true } )

清空表中所有数据:
db.student.remove({})
删除文档是永久性的,不能撤销,也不能恢复的。因此,在执行remove()函数前先用find()命令来查看下是否正确。

7.关于ObjectId

http://www.runoob.com/mongodb/mongodb-objectid.html
MongoDB中的文档(对象)必须有一个"_id"键。这个键的值可以是任何类型的,默认是个ObjectId对象。

在一个集合里面,每个文档都有唯一的"_id"值,来确保集合里面每个文档都能被唯一标识。

MongoDB采用ObjectId,而不是其他比较常规的做法(比如自动增加的主键)的主要原因,因为在多个 服务器上同步自动增加主键值既费时又费力。
当需要通过"_id"来查找对象时,不能直接查找,要先转化为ObjectID对象:

var ObjectID = require('mongodb').ObjectID;
var id = new ObjectID(id);
8.Linux系统下使用mongodb:
https://zhidao.baidu.com/question/394990939779999805.html


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值