mongodb

  1. 非关系型数据库,又叫 nosql ,使用场景多是解决大规模数据集合多重数据种类
  2. 官网下载安装即可
  • 如果安装文件目录中没有 data 文件夹,手动建一个 data 文件夹,data 下面再建一个 db 文件夹
  • 为了可以在任一盘符下都可以启动,最好手动配置一下全局环境变量
  1. 服务端启动
  • 终端中 输入指令 mongod --dbpath 安装路径 (D:\MongDB\bin)
  1. 客户端启动
  • 终端中 输入指令 mongo
  1. 注意: 如果安装过程中报错,直接跳过,安装完成后,在安装目录终端中输入指令
  • 删掉之前的服务:mongod --remove --serviceName "MongoDB"
  • 新建服务:mongod --dbpath “D:\Program Files\MongoDB\data” --logpath “D:\Program Files\MongoDB\log\mongod.log” --install --serviceName “MongoDB” ,注意路径需要改
命令行操作指令
  1. 库操作
  • 查看数据库:show dbs
  • 创建数据库:use 数据库名称 ,没有这个数据库就创建,有就切换
  • 删除数据库:db.dropDatabase() 删除当前数据库
  1. 集合操作
  • 查看:show collections / db.getCollectionNames()
  • 创建:**db.createCollection(‘集合名’, {配置})
  • 删除:db.集合名.drop()
  1. 文档操作(每一条数据)
  • 增加
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 使用

  1. 安装、引入
// npm i mongodb -S
const mongodb = require('mongodb')
  1. 实例化并连接
let mongoCt = mongodb.MongoClient

// mongoCt.connect('协议://地址:端口',回调(err,client)) 
// err: 错误信息, client: 链接后的客户端
mongoCt.connect('mongodb://localhost:27017',(err, client) => {})
  1. 链接数据库 和 集合
let db = clicent.db('数据库名称')
let collect = db.collection('集合名称')
  1. 操作集合
  • 增加数据
// 语法: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 })
  1. 关闭数据库
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()
    	}) 
  }
})