MongoDB介绍
制作人:全心全意
MongoDB存储的是json对象(文档型存储)。
MongoDB将磁盘格式化为gridfs,在此文件格式上存储数据,存储的数据为二进制的json格式。
MongoDB引用了chrome独特的js引擎chrome v8,所以MongoDB有能力执行JS。
命令介绍
bsondump:导出二进制结构的备份文件
mongo:客户端
mongod:服务端
mongodump:整体数据库备份(二进制)
mongoexport:导出易识别的json文档或csv文档
mongorestore:数据库整体导入
mongos:路由器(集群时使用)
启动服务
./bin/mongod --dbpath 数据存储目录 --logpath 日志存储文件 --port --fork
--dbpath:数据存储目录
--logpath:日志存储目录及文件名
--port:运行端口(默认27017)
--fork:后台进程运行
常用命令
查看所有数据库
show databases;
或
show dbs;
选择库
use 库名
查看当前数据库的collection
show tables;
或
show collections;
创建数据库(隐式创建)
在MongoDB中隐式创建数据库,只需要直接切换到数据库中,使用该数据库,MongoDB会自动创建该数据库。
创建collection(支持隐式创建)
db.createCollection('名称');
删除collection(进入数据库中)
db.collection名.drop();
删除数据库(进入要删除的数据库)
db.dropDatabase();
数据操作
增
MongoDB中如果不指定主键_id,MongoDB会自动创建主键。
语法格式:
db.collection名.insert(json或数组)
增加单条数据
db.stu.insert(
{
"_id":"1",
"name":"lisi",
"age":25,
}
);
增加多条数据
db.stu.insert([
{
"_id":2,
"name":"wnagwu",
"age":22,
"sex":"男",
},
{
"_id":3,
"name":"xiaohong",
"sex":"女"
}
]);
删
语法格式:
db.collection名.remove(查询表达式,选项)
查询表达式:
查询表达式依然是个json对象
查询表达式匹配的行将被删除
如果查询表达式为空对象{},collection中的所有文档将被删除
选项:
是否只删除一行{justOne:true/false},默认为false
删除匹配的所有数据
db.stu.remove(
{
"age":22,
}
);
仅删除匹配的一条数据
db.stu.remove(
{
"age":22,
},true
);
改
语法格式:
db.collection名.update(查询表达式,新值,选项);
新值:
赋值表达式:
$set:修改某个列的值
$unset:删除某个列
$remove:重命名某个列
$inc:增长某个列
$setOnInsert:当upsert为true时,并且发生了insert操作时,可以补充的字段
选项:
upsert:没有匹配的行,则直接插入该行
multi:修改所有匹配结果,默认仅修改一条
查
语法格式:
仅显示一条匹配结果
db.collection名.findOne(查询表达式,查询的列);
显示全部匹配结果
db.collection名.find(查询表达式,查询的列);
查询表达式
$ne:不等于
{列名:{$ne:值}}
$in:取值的列表
{列名:{$in:[值1,值2...]}}
$nin:非取值的列表
{列名:{$nin:[值1,值2...]}}
$exists:查询含有指定字段的文档
{列名:{$exists:1}}
and的使用
{条件1,条件2...}
or的使用
{$or:[条件1,条件2...]}
$where:遍历每一条数据采用js语法查询
{$where:"this.列名 == 值 && ..."}
不推荐使用,效率极低
分组操作
语法格式:
db.collection名.aggregate([
{$match:{查询条件}},
{$group:{_id:"进行分组的字段名",操作后返回结果的字段别名:{操作函数:"$操作字段名"}}}
])