杂记
- NoSQL 非关系型数据库
- NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
- 表 => 集合
- 文档 => 每一行记录 => bson(和json一样) 存储的字段是可以不一样的
- 分布式,集群,扩展容易
学习指令
-
mongod --dbpath F:\study-mongodb\testone
分为服务端和客户端,服务端命令行开启,客户端自己指定 -
mongo
启动mongodb程序 -
show dbs
查看所有数据库(无内容的数据库不会显示出来) -
use xxxdatabase
若有该数据库则切换,若无数据库则创建并切换 -
db
查看当前使用的数据库 -
db.dropDatabase()
删除数据库(默认为当前数据库,也就是db显示出来的数据库) -
db.createCollection('tablename', options)
创建集合(也就是数据表),options是可选参数,有下面4点:
- capped 若为true则创建固定集合,超过集合大小怎会覆盖最早文档
- autoIndexId 若为true则自动在 _id 字段创建索引,默认false
- size 为固定集合指定一个最大值,以千字节计(KB)
capper为true才需要选择
- max 指定固定集合中包含文档的最大数量。
eg: 像下面这样,options是一个对象
db.createCollection("mycol", { capped : true, autoIndexId : true, size : 6142800, max : 10000 } )
-
db.joe.insert({"name":"许子豪"})
往集合里面插入数据(没有指定集合就会插入数据会自动创建一个名字是joe的集合) -
document = ({"name":"joe","age":"20","sex":"male"}) db.student.insert({"name":document})
把数据定义为一个变量再插入 -
db.tablename.drop()
删除集合 -
show collections
ORshow tables
显示所有集合 -
db.tablename.find()
查看数据表里面的数据(要具体搜索里面就写上{“name”: “xxx”}对象) -
db.tablename.find().pretty()
格式化搜索出来数据的显示 -
修改集合的数据
db.tablename.udpate(
{searchobj}, //{'name': 'xxx'}
{updateojb}, //{$set{'name': 'xxx'}} 注意这里有个$set
{
upsert 可选,这个参数的意思是,如果不存在update的记录,是否插入,默认false
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新
writeConcern :可选,抛出异常的级别。
}
)
- 删除文档
db.tablename.remove(
{searchobj}, //{'name': 'xxx'}
{
justOne: true //只删除一个文档 默认是false
}
)
db.tablename.deleteOne({}) //只删除一个匹配的
db.tablename.deleteMany({}) //删除多个匹配的