mongoDb和mysql的对应关系

1、mongoDb安装
参考
window平台安装教程
mongod --dbpath "D:\mongoDb\data\db" --logpath "D:\mongoDb\data\log\mongo.log" -install -serviceName "MongoDB"
net start mongodb
http:
(常规终端启动:[不用管])
mongod --dbpath D:\mongoDb\data\db --logpath D:\mongoDb\data\log\mongo.log --fork
mongod --config D:\mongoDb\config\mongod.conf
2、常用命令
1、(原生)基础命令
1.1、数据库、集合
show databses / show dbs
use database[数据库名称] 选择不存在的数据库会隐式创建该数据库
先选择到要删除的数据库(use) 然后:db.dropDatabase()
db.createCollection('c1')
show collections
db.集合名.drop()
1.2 、文档基本curd
1.2.1 增加
留心一:数据库和集合不存在时,都隐式创建
留心二:对象的键同意不加引号方便看,但是查看集合数据时系统会自动加上
留心三:mongodn会给每条数据添加一个全球唯一的ID
db.c1.insertMany({})
db.c1.insert([{username:"z3",age:3{username:"z4",age:4}])
1.2.2 查询
语法: db.集合名.find(条件,[查询的列]) 【写法见下】
格式化:db.集合名.find().pretty()
条件(例子):
查询所有数据 {}或者不写
查询age=6的数据 {age:6}
查询age=6且性别为男 {age:6,sex:'男'}
查询的列(例子):
不写 - 查询全部的列
{age:1} 只显示age列,可以显示多个想要的列{user:1,age:1.......}
{age:0} 除了age列外都显示 可以不显示多个想要的列{user:0,age:0}
【tip】: 无论怎么写系统自定义_id都会在
/ ** 进阶写法 ** /
db.集合名.find({键:{运算符:值}})
db.c1.find({age:{$lt:5}})
db.c1.find({age:{$in:[3,4,5]}})
1.2.3、更新
基础语法: db.集合名.update(条件,新数据,{是否新增,是否修改多条})
例子:
db.users.update(
{ "name": "张三" },
{ $set: { "age": 29 } },
{ upsert: false, multi: false }
);
/ ** 覆盖更新 ** /
db.集合名.update(条件,数据)
例子:db.comment.update({_id:"1"},{likenum:NumberInt(1001)})
/ ** 局部修改($set) ** /
db.c3.update({username:"zs2"},{$set:{username:"zs222"}})
/ ** 加减更新 ($inc) ** /
db.c3.update({username:"zs10"},{$inc:{age:2}})
db.c3.update({username:"zs10"},{$inc:{age:-2}})
/ ** 进阶例子 **/
db.c4.update({username:"熊子阳"},{
$set:{username:"Aoi"},
$inc:{age:971},
$rename:{who:"sex"},
$unset:{other:true}
})
1.2.4、删除
语法:db.集合名.remove(条件,是否删除一条)
db.users.remove({"name": "张三"}, true)
1.2.5、排序 & 分页
/ ** 排序 ** /
语法:db.集合名.find().sort(JSON数据)
说明:键 - 就是要排序的列/字段, 值:1升序 -1降序
db.c2.find().sort({age:-1})
/ ** 分页 ** /
语法:db.集合名.find().skip(数字).limit(数字)
说明:skip里的数字指跳过指定数量(可选),limit限制查询的数量
db.c2.find().sort({age:-1}).skip(1).limit(2)
1.2.6、条件连接查询
语法:$and:[{},{},{}]
$or:[{},{},{}]
db.comment.find({$or:[{userid:"1003"},{likenum:{$lt:1000}}]})
1.2.6、聚合查询(重要)
db.collection.aggregate{
[
{$group:{_id:"$分组键名"}, "$分组键名", 别名:{聚合运算: "$运算列"} },
{条件筛选:{键名:{运算条件:运算值}}}
]
}
db.orders.aggregate([
{
$group: {
_id: null,
total_price: { $sum: "$price"}
}
}
])
db.orders.aggregate([
{
$group: {
_id: '$cust_id',
total_price: { $sum: "$price"}
}
}
])
db.c3.aggregate([
{$group:{ _id:"$sex",res:{$sum:1}}},
{$sort:{res:1}}
])
1.3 索引
1.3.1 创建索引
创建索引语法: db.集合名.createIndex(待创建索引的列,额外选项)
例子:
db.c1.create({name:1})
db.c1.create({name:1},{name:"xzy"})
db.c1.create({name:1,age:-1},{name:"hh"})
db.c1.createIndex({name:1},{unique:"name"})
1.3.2 删除索引
全部删除:db.集合名.dropIndexes()
删除指定:db.集合名.dropIndex(索引名)
1.3.3 查看索引
查看索引语法:db.集合名.getIndexes()
1.3.4 分析索引(执行计划)
语法:db.集合名.find().explain()