mongodb
非关系型数据库,又叫nosql,缓存型,使用场景多是解决大规模数据集合多重数据种类
找到安装目录\Server\4.0\bin\ -> cmd回车-> mongod 回车->mongod --dbpath c:\data\db
data和db目录要手动创建
- 服务端启动: 可选
找到安装目录\Server\4.0\bin\ -> cmd回车-> mongod 回车
一般开启会默认启动
- 客户端启动:
找到安装目录\Server\4.0\bin\ -> cmd回车-> mongo 回车
- 环境变量 可选
为了在任意盘符下去都可以启动 mongod服务端|mongo客户端,把安装目录添加到环境变量
mysql vs mongodb
mysql | mongoDb | |
---|---|---|
database(库) | database(库) | |
table(表) | collection(集合) | |
row(一条数据) | document(文档) | |
column(字段) | field(区域) | |
二维表,每次存到磁盘 | json,存在缓存,关闭时存到磁盘 | 存储方式 |
mongodb命令行操作 声明式 | obj.api()
库操作
**
查: show dbs
db 查看当前库
建: use 库名 没有建,有就切换
删: db.dropDatabase() 删除当前库
集合(表)操作
建:db.createCollection('表名',{配置})
//配置:{size:文件大小,capped:true,max:条数|文档数} capped定量
//db.表(集合).isCapped() 返回 true/false 是否是定量
查:show collections / db.getCollectionNames()
删:db.表|集合.drop()
文档(row)操作
增
db.集合.save({}) //添加一条
db.集合.insert({}) //添加一条
db.insertOne({}) //添加一条
db.集合.save([{},{}]) //多条
db.集合.insert([{},{}]) //多条
//insert 不会替换相同ID save会
删
db.集合.deleteOne({要删数据条件描述}) //一条
db.集合.remove({},true) //一条
db.集合.remove({要删数据条件描述}) //多条
db.集合.remove({}) //清空表
改
db.集合.udpate({查询条件},{替换条件},插入boolean,全替换boolean)
查询条件
{age:22} age == 22
{age:{KaTeX parse error: Expected 'EOF', got '}' at position 6: gt:22}̲} age > 22 {a…lt:22}} age < 22
{age:{KaTeX parse error: Expected 'EOF', got '}' at position 7: gte:22}̲} age>=22 {ag…lte:22}} age<=22
{age:{ gte:22}} age<=122 && age>=22
{$or:[{age:22},{age:122}]} 22 or 122
{key:value,key2,value2} value && value2
{name:/正则/}替换条件
{ inc:{age:1}}
查
所有:db.集合.find(条件)
条数: db.集合.find().count()
去重:db.集合.distinct(key)
db.集合.find({条件},{指定要显示列区域})
指定要显示列区域
username:1 显示这个区域,其他不显示
username:0 不显示这个区域,其他显示
_id 是默认显示
排
db.集合.find().sort({key:1,key2:-1}) //升
db.集合.find().sort({key:-1}) //降
限定
db.集合.find().limit(number) //限定
db.集合.find().skip(number) //跳过
db.集合.findOne()//找第一个
db.集合.find().limit(1) //查询第一条
node + mongodb客户端
安装+引入
npm install mongodb -S
var mysql = require('mongodb');
实例化并连接
let mongoCt = mongodb.MongoClient;
mongoCt.connect('协议://地址:端口',回调(err,client)) //err 错误 client链接后的客户端
链接库和集合
let db = client.db('库名')
let user = db.collection('集合名');
集合操作
//user.API() 集合操作 返回 对象
//增
insertOne(对象数据,(err,res)=>{}) //res = 对象
insertMany(arr数据,(err,res)=>{}) //res = 对象
//res.result.n 结果 ok 状态
//res.ops内容 数组
//result.insertedId 插入后的id
//删:
deleteOne({条件},(err,result)=>{})
//改:
updateOne({条件},{更新后},(err,res)=>{})
updateMany({条件},{更新后},(err,res)=>{})
updateMany({条件},{更新后},{配置},(err,res)=>{})
//配置: upsert:true 插入 projection:true 全局替换
//查:
user.find({条件},{skip:1,limit:1,projection:{key:1}},(err,result)=>{result=对象})
user.find({条件},{projection:{key:0}}).toArray((err,result)=>{reulst==arr})
user.countDocuments((err,num)=>{num返回数量})
//排
user.find(..).sort({key:-1}).toArray..
user.find({},{projection:{},sort:{key:-1}}).toArray..
关闭库
client.close()