mongodb
- 非关系型数据库,又叫 nosql ,使用场景多是解决大规模数据集合多重数据种类
- 官网下载安装即可
- 如果安装文件目录中没有 data 文件夹,手动建一个 data 文件夹,data 下面再建一个 db 文件夹
- 为了可以在任一盘符下都可以启动,最好手动配置一下全局环境变量
- 服务端启动
- 终端中 输入指令 mongod --dbpath 安装路径 (D:\MongDB\bin)
- 客户端启动
- 终端中 输入指令 mongo
- 注意: 如果安装过程中报错,直接跳过,安装完成后,在安装目录终端中输入指令
- 删掉之前的服务:mongod --remove --serviceName "MongoDB"
- 新建服务:mongod --dbpath “D:\Program Files\MongoDB\data” --logpath “D:\Program Files\MongoDB\log\mongod.log” --install --serviceName “MongoDB” ,注意路径需要改
命令行操作指令
-
库操作
- 查看数据库:show dbs
- 创建数据库:use 数据库名称 ,没有这个数据库就创建,有就切换
- 删除数据库:db.dropDatabase() 删除当前数据库
-
集合操作
-
查看:show collections / db.getCollectionNames()
-
创建:**db.createCollection(‘集合名’, {配置})
-
删除:db.集合名.drop()
-
-
文档操作(每一条数据)
-
增加
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) //将所有的用户名为李四的年龄全都设置为20岁 db.user.update({username:"李四"},{$set:{age:20}},false,true) 第三个参数:如果更新的数据没有的话则插入,默认不插入 第四个参数:默认只更新一条数据,如果要批量更新设置true
-
查询
查所有:db.集合.find(查询条件) 查条数: db.集合.find().count() 去重:db.集合.distinct(key) // 返回数组,.length 可以获取长度 db.集合.find({查询条件},{age: 1,_id: 0}) // id 不显示,age 显示 1显示,0不显示 /* 查询条件: {age: 22} age == 22 {age:{ $gt: 22 }} age > 22 {age:{ $lt: 22}} age < 22 {age:{ $gte: 22}} age>=22 {age:{ $lte: 22}} age<=22 {age:{ $lte: 122,$gte: 22}} age<=122 && age>=22 {$or:[{age: 22},{age: 122}]} 22 or 122 {key:value,key2:value2} value && value2 {name:/正则/} 替换条件: {$set:{数据}} {inc:{age:5}} //在原来的基础上年龄递增5 */
-
排序
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).skip(10) // 跳过 10 条,查询 1 条
-
node + mongodb 使用
-
安装、引入
// npm i mongodb -S const mongodb = require('mongodb')
-
实例化并连接
let mongoCt = mongodb.MongoClient // mongoCt.connect('协议://地址:端口',回调(err,client)) // err: 错误信息, client: 链接后的客户端 mongoCt.connect('mongodb://localhost:27017',(err, client) => {})
-
链接数据库 和 集合
let db = clicent.db('数据库名称') let collect = db.collection('集合名称')
-
操作集合
- 增加数据
// 语法:collect.API() // 增加数据 collect.insertOne(数据对象, (err, res) => {}) // 增加一条数据 collect.insertMany(arr数据, (err, res) => {}) // 增加多条数据 //res.result.n 结果 ok 状态 //res.ops 插入的内容 数组 //result.insertedId 插入后的id
- 删除数据
collect.deleteOne({删除条件}, (err, result) => {}) // 删除一条数据 collect.deleteMant({}, (err, result) => {}) // 删除多条数据
- 修改数据
collect.updateOne({条件}, {更新后}, (err, res) => {}) // 修改一条数据 collect.updateMany({条件}, {$set:{age: 24}}, (err, res) => {}) // 修改多条数据
- 查询数据
// 方法一:直接在回调函数里那结果, 返回值:对象 projection 中 key 为 1 表示显示 collect.find({条件},{skip:1,limit:1,projection:{key:1}},(err,result)=>{ result=>对象 }) // 方法二:返回结果直接 .toArray(err, res) 方法,转成 数组 collect.find({条件},{skip:1,limit:1,projection:{key:0}}).toArray((err,result)=>{ reulst=>arr })
- 排序
// 方法一: collect.find().sort({key: -1}).toArray((err, res) => {}) // 方法二: collet.find({查找条件}, {limit:5, sort: {key: 1}}).toArray((err, res) => {})
- 分页
collect.find({},{skip:5,limit:5}).toArray((err,result)=>{ reulst=>arr })
-
关闭数据库
client.close()
例子
// 引入 mongodb 模块 const mongodb = require('mongodb') // 实例化并连接 let mongoCt = mongodb.MongoClient mongoCt.connect('mongodb://localhost:27017', { useUnifiedTopology: true }, (err, client) => { if(!err){ // 链接 数据库 let db = client.db('student') // 链接 student 数据库 // 链接 集合 let collect = db.collection('info') // 链接 info 集合 // 增加数据 collect.insertMany( [ {username: "张三", age: 18, address: '江西九江'}, {username: '李四', age: 20, address: '江西南昌'}, {username: '王五', age: 16, address: '江西赣州'}, {username: '赵六', age: 25, address: '江西新余'}, {username: '麻子', age: 19, address: '福建泉州'}, {username: '二狗', age: 28, address: '福建厦门'}, {username: '愣子', age: 22, address: '福建福州'} ], (err, result) => {} ) // 删除数据 collect.deleteOne({username: '二狗'}, (err, result) => { console.log(result) }) // 修改数据 collect.updateOne( {username: '愣子'}, {$set:{username: '二愣子', age: 24, address: '北京东城'}}, (err, result) => { console.log(err) }) // 查询数据(可以按条件查询,可以实现分页,排序等需求) collect.find({}, {skip:1, limit: 5, sort:{age: -1}}) .toArray((err, res) => { console.log(res) // 关闭数据库连接 client.close() }) } })