MongoDB基本使用
对于任何的数据库,都离不开最核心的功能:CRUD(增删改查);所以在MongoDB里面对于数据的操作方面CRUD都是有支持的,但除增加外,其它的都很麻烦。最为麻烦的是修改。
在MongoDB数据库里面存在有数据库的概念,但是没有模式(所有的信息都是按照文档保存的),文档的数据结构是JSON结构(MongoDB内部称为BSON),只不过在进行一些数据处理的时候才会使用到MongoDB自己的一些操作符。
1、使用sun_bright数据库
usr sun_bright
此时不会创建数据库,只有在数据库里面保存集合数据之后才能够真正创建数据库
2、创建一个集合
创建一个emp集合
db.createCollection("emp") ;
{ "ok" : 1 }
> show databases;
local 0.078GB
imooc 0.078GB
此时sun_bright数据库才会真正的创建、存在
3、MongoDB集合的操作
安照以上代码新式会觉得不正常,因为一般使用MongoDB数据库集合操作时都是直接向里面保存一个数据。
db.emp.find(); --查询emp集合中的数据
db.dept.insert({"deptno":10,"dname":"财务部","loc":"北京"}); -- 执行此语句
> db.emp.find();
> db.dept.insert({"deptno":10,"dname":"财务部","loc":"北京"});
WriteResult({ "nInserted" : 1 })
4、查看所有集合
show collections;
此时发现以上中dept集合已经自动创建
5、查看dept表的数据
-- 语法:db.集合名词.find({若干条件})
> db.dept.find();
{ "_id" : ObjectId("5be1468434039413dad7c107"), "deptno" : 10, "dname" : "财务部", "loc" : "北京" }
>
从传统的数据表来看,表的结构一旦定义就必须按照其定义的要求进行内容的编写,但是MongoDB不一样,它可以自己随意扩充数据
6、扩充不规则数据
var deptData = {
"deptno" : 20,
"dname" : "研发部",
"loc" : "甘肃",
"count" : 20,
"avg" : 8000.0
} ;
db.dept.insert(deptData) ;
> var deptData = {
"deptno" : 20,
"dname" : "软件开发部",
"loc" : "甘肃",
"count" : 20,
"avg" : 8000.0
} ;
> db.dept.insert(deptData) ;
WriteResult({ "nInserted" : 1 })
> db.dept.find();
> var deptData = {
"deptno" : 20,
"dname" : "软件开发部"
} ;
> db.dept.insert(deptData) ;
WriteResult({ "nInserted" : 1 })
> db.dept.find();
此时dept集合的内容可以有用户随便去定义,完全不用考虑其他的结构,那么实际上就必须明确一点:在MongoDB数据库之中是绝对不可能存在有查看集合结构的操作。
7、关于ID的问题
在MongoDB集合中的每一行记录都会自动的生成一个:“ “_id” : ObjectId(“5be1468434039413dad7c107”), ”的数据,这个数据组成是:时间戳 + 机器码 + 进程PID + 计数器,这个ID的信息是MongoDB数据库为用户自己生成的。
8、查看一个文档信息
db.dept.findOne() ;
9、删除数据
db.dept.remove( {"_id" : ObjectId("5be1468434039413dad7c107")} ) ;
10、更新数据
> var deptData = {
"deptno" : 50,
"dname" : "软件开发部",
"loc" : "农业科技",
"count" : 60,
"avg" : 9000.0
} ;
> db.dept.update({"_id" : ObjectId("5be14b8634039413dad7c108")} , deptData) ;
-- 更新前面为条件,后面为内容
11、删除集合
语法:db.集合名词.drop()
>db.dept.drop() ;
>show collections ;
12、删除数据库
删除当前所在的数据库:db.dropDatabase() ;
因为删除数据库是执行以上命令会删除当前所在的数据库,所以必须要切换到所要删除的数据库之后才可以进行删除