Node | MongoDB

1、安装: 官网下载安装社区版
2、图形界面: compass
3、 启动MongoDB,在bin文件下打开cmd,输入如下命令

启动数据库:mongod.exe --dbpath C:\MongoDB\data\db
链接数据库:mongo.exe --port 27017

4、node.js连接mongodb
安装: cnpm i mongodb --save

const MongoClient = require('mongodb').MongoClient //mongodb客户端
const url = 'mongodb://localhost:27017'//本地启动的mongodb服务
const dbName = 'comments1'//数据库名字
MongoClient.connect(url,{
    useUnifiedTopology:true,
    useNewUrlParser:true
},(err,client)=>{
    if(err){
        console.log("mongodb 连接出错",err);
        return
    }
    console.log("mongodb连接成功");
    // 选择数据库
    const db = client.db(dbName)
    // 关闭
    client.close()
})

5、增删改查代码示例

const MongoClient = require('mongodb').MongoClient //mongodb客户端
const url = 'mongodb://localhost:27017'//本地启动的mongodb服务
const dbName = 'comments1'//数据库名字
MongoClient.connect(url, {
    useUnifiedTopology: true,
    useNewUrlParser: true
}, (err, client) => {
    if (err) {
        console.log("mongodb 连接出错", err);
        return
    }
    console.log("mongodb连接成功");
    // 选择数据库
    const db = client.db(dbName)
    // 切换到指定的集合
    const userCollection = db.collection("users")
    //查询数据
    // // sort方法中,{_id:-1} 最后插入的数据在最上方
    // userCollection.find().sort({_id:-1}).toArray((err,result)=>{
    //     if(err){
    //         console.log("查询出错",err);
    //         return
    //     }
    //     console.log("查询成功",result);
    // })
    // 新增数据
    // userCollection.insertOne({
    //     username:"shuangyue",
    //     password:"abc",
    //     age:30,
    //     city:"beijing"
    // },(err,result)=>{
    //     if(err){
    //         console.log("插入失败",err);
    //         return
    //     }
    // result.insertedCount插入的条数,result.insertedId数据的id
    //     console.log("插入成功",result.insertedCount,result.insertedId);
    // })
    // 修改数据
    // userCollection.updateOne(
    //     { username: "zhangsan" },//修改的条件(也就是筛选要修改的数据)
    //     { $set: { age: 21, city: "beijing" } },//修改的内容
    //     (err, result)=>{
    //         if(err){
    //             console.log("修改失败",err);
    //             return
    //         }
    //         // result.modifiedCount修改成功的条数
    //         console.log("修改成功",result.modifiedCount);
    //     }
    // )
    // 删除数据
    userCollection.deleteOne({ username: 'wangwu' }, (err, result) => {
        if (err) {
            console.error('删除数据出错', err)
            return
        }
        console.log('删除成功')
    })
    // 关闭
    // client.close()
})

6、使用mongoose实现模块化
安装: cnpm i mongoose --save

  • 新建db文件夹,新建db.js连接数据库
// 连接数据库(mongodb 的服务端)

const mongoose = require('mongoose')

const url = 'mongodb://localhost:27017'
const dbName = 'comment2'

mongoose.set('useCreateIndex', true)
mongoose.set('useFindAndModify', true)

// 开始连接
mongoose.connect(`${url}/${dbName}`, {
    useNewUrlParser: true,
    useUnifiedTopology: true
})

const conn = mongoose.connection

conn.on('error', err => {
    console.error('mongoose 连接出错', err)
})
module.exports = mongoose

  • 在db文件夹中,新建model.js文件,定义规范
// 数据模型(规范数据格式)

const mongoose = require('./db')

// 定义 User Schema (数据规范)
const UserSchema = mongoose.Schema({
    username: {
        type: String,
        required: true, // 必需
        unique: true // 唯一,不重复
    },
    password: String,
    age: Number,
    city: String,
    // 性别
    gender: {
        type: Number,
        default: 0 // 0 - 保密,1 男,2 女
    }
}, {
    timestamps: true // 时间戳,自动添加文档的创建时间、更新时间
})

// 定义 User Model user对应着mongdb中的users
const User = mongoose.model('user', UserSchema)

module.exports = {
    User
}
  • 使用model操作数据(新增和查询)
// 使用model操作数据
const {User} = require("./model")

!(async()=>{
    // // 1、查询数据
    // 创建数据的第一种方式
    // const zhangsan = new User({
    //     username: "zhangsan",
    //     password: "abc",
    //     age: 20,
    //     city: "beijing",
    //     gerder: 1
    // })
    // zhangsan.save()
    // // 创建数据的第二种方式
    // const lisi = await User.create({
    //     username: "lisi",
    //     password: "123",
    //     age: 23,
    //     city: "shanghai",
    // })
    // lisi.save()
    // 查询列表数据 返回的是数组
    // const userList = await User.find().sort({age:"-1"})
    // console.log(userList)
    // 查询单条数据 返回的是对象
    const user = await User.findOne({username:"zhangsan"})
    console.log(user)
})()

  • 更新和删除数据
const {User} = require("./model")
!(async()=>{
    // 更新
    const updateResult = await User.findOneAndUpdate(
        {username:"zhangsan"},//条件
        {age:30},//更新的内容
        {
            new:true //返回更新后的数据
        }
    )
        console.log(updateResult)
    // 删除
    // const removeResult = await User.remove({username:"lisi"})
    // console.log(removeResult)
})()
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容