Node中使用mongodb数据库

Node.js 使用mongodb数据库实现增删改查

mongodb数据库

启动:

# mongodb 默认执行在mongod命令所在盘符根目录下的/data/db作为自己的数据储存目录
# 所以在第一次执行时需要自己新建/data/db
mongod

停止:

在开启服务的控制台直接ctrl+c
或者直接关闭开启服务的控制台窗口

1.1. 连接和退出数据库

  1. 连接

    # 该命令默认连接本机的MongoDB服务
    mongo
  2. 退出

    # 在连接状态 控制台输入 exit命令
    exit

1.2. 基本命令

  • show dbs
    • 显示所有数据库列表
  • db
    • 查看当前数据库
  • use 数据库名字
    • 切换到指定数据库(如果没有会新建)
  • 在插入数据后才会显示数据库

2.1. 怎么在Node中使用MongoDB

2.1.1. 使用官方的mongodb包来操作

mongodb/node-mongodb-native: The Official MongoDB Node.js Driver (github.com)

2.1.2. 使用第三方的mongoose 来操作MongoDB

  1. Mongodb 数据库概念
    • 数据库

    • 集合

    • 文档

    • 可以有多个数据库

    • 一个数据库可以有多个集合(表)

    • 一个集合中可以有多个文档(表记录)

    • 文档结构很灵活, 没有任何限制

    • MongoDB非常灵活, 不需要像mysql等数据库 先创建数据库表设计表结构等

      • 在这里只需要当你插入数据时,只需要指定那个数据库的那个集合插入什么数据
      • 一切都由MongoDB来完成建库建表的事
    • ```js
      {

      qq:{
          user:[
              {name:'zhangsan',age:15},    
              {name:'lisi',age:12},    
              {name:'zhangsan',age:15},    
              {name:'zhangsan',age:15}
              ...
          ],
          product:[
                  
          ]
      },
      taobao:{
          
      },
      baidu:{
          
      }
      

      }

      
      2. ##### 起步
      
         安装:
      
         ```base
         npm install mongoose

    hello world:

    const mongoose = require('mongoose');
    mongoose.connect('mongodb://localhost:27017/test', {useNewUrlParser: true, useUnifiedTopology: true});
    
    const Cat = mongoose.model('Cat', { name: String });
    
    const kitty = new Cat({ name: 'Zildjian' });
    kitty.save().then(() => console.log('meow'));

3. 设计Schema 发布 Model

const mongoose = require('mongoose');

const { Schema } = mongoose;

// 1.连接MongoDB数据库 
// 数据库不需要创建
// 在添加第一条数据时会自动创建
mongoose.connect('mongodb://localhost:27017/itcast');

// 2. 设计集合结构(表结构)
// 字段名称就是表结构中的属性名称
// 约束的目的是为了保证数据的完整性,不要有脏数据
const userSchema = new Schema({
    username: {
        type: String,
        required: true
    },
    password: {
        type: String,
        required: true
    },
    email: {
        type: String
    }
});

// 3.将文档结构发布为模型
//      mongoose.model方法就是用来将一个架构发布为model
//      第一个参数: 传入一个大写名词单数字符串来表示你的数据库名称 
//          mongosse会自动将大写名词字符串生成小写复数的集合名称
//      第二个参数: 架构Schema
// 
//      返回值: 模型构造函数
const User = mongoose.model('User', userSchema);


// 4. 当我们有了模型构造函数之后就可以使用这个构造函数对users为所欲为了(增删改查)

4.增加数据

let admin = new User({
    username: 'admin',
    password: '123456',
    email: 'admin@admin.com'
})

admin.save().then((res) => console.log(res));

5. 查询数据

  1. 查询所有

    User.find().then(res => {
        console.log(res);
    })
  2. 按条件查询

    User.find({
        username: 'admin'
    }).then(res => {
        console.log(res);
    })
  3. 按条件查询第一条

    User.findOne({
        username: 'admin'
    }).then(res => {
        console.log(res);
    })

6. 删除数据

  1. 删除所有符合条件的

    User.remove({
        username: 'admin'
    }).then(res => {
        console.log(res);
    })