MongoDB数据库
非关系型数据库,数据库存储方式为文档,数据为键值对形式。
MongoDB文档类似于json对象,字段的值可以包含其他的文档,数组以及数组文档
MongoDB概念分析
SQL术语/概念 | MongoDB术语/概念 | 解释/说明 |
---|---|---|
database | database | 数据库 |
table | collection | 表/集合 |
row | document | 行/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
table joins | 表关联/MongoDB不支持 | |
primary key | primary key | 主键索引/mongodb自动将_id设置为主键索引 |
一 MongoDB的服务启动,创建数据库
1.服务开启
找到你的MongoDB的bin目录
在终端输入 cd MongoDB的bin目录
mongod.exe --dbpath=你要选择创建数据库的路径
2.进入MongoDB数据库
新打开一个黑名终端:cd MongoDB的bin目录
mongo.exe
二.对于库的操作
1.创建库
use 库名
注意:
1.当我use一个不存在的库的时候,其实这个库已经创建出来了,但是里面没有数据使用show dbs的是时候,该库不会显示出来
2.mongoDB严格区分大小写
2.删除数据库
1.删除数据库之前最好use一下,确定自己所在哪个库下
2.db.dropDatabase()
3.查看所有的库
show dbs
三.对于集合的操作
1.创建集合
db.createCollection('集合名称')
例:db.createCollection('user')
在当前的库里创建一个user集合
2.删除集合
db.集合名.drop()
例:db.user.drop() 删除user集合
3.显示所有集合
show collections
四 INSERT/SAVE 文档的插入
1.insert 插入一条文档
db.集合名.insert(文档)
文档:{键:值}
2.insert插入多条文档
db.集合名.insert([文档1[,文档2]])
例:db.user.insert([{"name":"Lily"},{"name":"Bob"}])
注:如果没有中括号那么只会将第一条数据插入成功
3.save (更多用来作为修改,也可以用来做文档的插入)
db.集合名.save(文档) 插入一条文档
覆盖:
db.集合名.save({"_id" : ObjectId("5a152a67fa08a5e7ad2ad092"),zzz:'vvv'})
将id为92的文档覆盖。
3.2版本以后建议只用
db.collection.insertOne()
db.collection.insertMany()
五 REMOVE 文档删除
1.只删除一条数据
db.集合名.remove(条件,1)
例;db.user.remove({name:"Lily"},1)
会删除匹配到的第一个文档
2.删除多条数据
db.集合名.remove(条件)
db.user.remove({name:"Lily"})
#会删除匹配到的所有数据
3.全部删除
db.集合名.remove({})
db.user.remove({})
六 FIND查询
1.查询所有
db.集合名.find()查询所有的数据
2.按照条件来查找
a.设置某些键来显示
db.集合名.find({条件},{key:1[,key2:1]})
1:显示 0:隐藏
例:db.user.find({name:"Lily"},{name:1})
查询所有name为Lily的文档,只显示name的值
b.按照条件来查询,除了key1 key2以外的键值对都显示
db.集合名.find({条件},{key:0[,key:0]})
例:db.user.find({name:"Lily"},{name:0})
c.查询所有,只显示某个键值对
db.集合名.find({},key:1)
3._id 键默认返回 _id:0 隐藏
除了设置系统的_id 可以混搭外,其他的都不可以混搭
db.集合名.find({文档},{_id:0,key:1})
id隐藏只显示key的键值对
4.findOne 查询一条数据
db.集合名.findOne({条件},{key:1[key:1]})
5.count 统计
db.集合名.find().count() 统计所有文档的条数
db.集合名.find({name:"Lily"}).count() 统计满足条件的文档的条数