mongodb学习(3)

什么是mongoose?

官方解释:一种专门为node.js量身打造的优雅的mongodb对象!

在这里插入图片描述
简单来说,mongoose是为node封装的一个mongodb库,相比较mongodbre,写法更加简单,很多函数都封装好了,可以直接使用。


node中如何使用mongoose?

在这里在node中新建一个项目(test)来具体说明。在使用mongoose之前,我们先来用express搭建一个非常简单的服务器。

  • 新建test文件夹,打开终端,输入npm init 进行初始化。
  • 安装两个框架:
    express: npm install express --save
    mongoose: npm install mongoose --save
  • 新建app.js后的项目目录为:

在这里插入图片描述

  • 新建服务器的代码:
const express = require("express");
const app = express();

app.get("/",(req,res)=>{
    res.end("hello!")
})

app.listen("5000",()=>{
    console.log("服务器已经启动!")
})
操作mongoose(以增加为例,其他的命令在下面讲)
  1. 引入:
import mongoose from "mongoose";
  1. 将连接mongodb(前提是mongodb已经启动起来): 这个链接的是mongodb数据库中的hello数据库
mongoose.connect("mongodb://localhost/hello",{useNewUrlParser:true});
  1. 监听连接结果:
//监听连接失败:
mongoose.connection.on("err",()=>{
   console.log("数据库连接失败!");
});
//监听连接成功:
mongoose.connection.on("open",()=>{
   console.log("数据库连接成功!");
});
  1. 创建personSchema模式对象
const personSchema =  mongoose.Schema({
    //人名
    p_name:{type:String,required:true},
    //性别
    p_sex:{type:String,required:true},
    //年龄
    p_age:{type:Number,required:true},
    //特长
    p_skill:{type:String,required:true}
});
  1. 创建以personSchema模式对象为基础的people集合:
const People = mongoose.model("peoples",personSchema);
  1. 创建person文档:
const person = new People({
     //人名
     p_name : "华晨宇",
     //性别
     p_sex : "男",
     //年龄
     p_age : 30,
     //特长
     p_skill: "唱歌 卖萌"
});
  1. 保存: 这时数据库里面就会有刚才插入的数据了。
person.save((err,result)=>{
   if(err){
 	  throw err;
   }
   console.log("数据插入成功!");
})

此时在浏览器敲入地址:http://localhost:5000/;控制台显示:
在这里插入图片描述
打开 mongodb 的可视化工具,可看到:
在这里插入图片描述
表明数据插入成功!


mongoose的命令:

对集合

//创建了一个以personSchema为基础的peoples集合
const People = mongoose.model("peoples",personSchema);

对文档

  1. 增:
const person = new Person({ "name" : "华晨宇" })
//1.save() 
person.save((err,result)=>{})
person.create({ "name" : "华晨宇" });
person.create([{ "name"  : "华晨宇"}, { "name" : "花花"}]);
 //接受两个参数,分别是匹配条件,回调函数
 //删除匹配到的第一个
 People.deleteOne({"name":"华晨宇"}(err, result)=>{
  	if(err){
  		throw err;
    }
})
 //删除匹配到的全部条目
 People.deleteMany({"name":"华晨宇"}(err, result)=>{
    if(err){
  		throw err;
    }
})
  1. 改:
//改掉匹配到的第一个
People.update(query, { name: 'suibian' }, options, callback);
People.updateMany(query, { name: 'suibian' }, options, callback);
//和update差不多,但是有些选项不支持,比如multi
People.updateMany(query, { name: 'suibian' }, options, callback);
  1. 查:
//find
//只有一个条件,第二个参数可以传递返回的值
People.find({"name":"华晨宇"},“name”,(err, persons)=>{})
//多个条件同时满足
People.find({name : "华晨宇",age: { $gt: 18 }}(err, persons)=>{})
//选择的条件也可以是一个正则表达式
People.find({name : "/晨/i",age: { $gte: 18 }}(err, persons)=>{})
People.findOne({ name : '华晨宇' },  (err, person)=> {});
//以下都是通过id寻找的
People.findById(id, 'name',  (err, person)=> {});
People.findById(id, 'name', { lean: true }, (err, person) =>{});
People.findOneAndDelete(conditions, [options,] callback) 
People.findOneAndRemove(conditions, [options,] callback) 
People.findOneAndUpdate(condition, { name: '花花' }, [options,] callback)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值