在 Node 中如何操作 MongoDB 数据库——mongoose

在Node中如何操作MongoDB数据库
1. 使用官方的 mongodb 包来操作

https://github.com/mongodb/node-mongodb-native

2. 使用第三方mongoose来操作MongoDB数据库

第三方包: mongoose 基于 MongoDB官方的 mongodb 包再一次做了封装。
网址:mongoosejs.com


mongoose


初识

♦️   创建一个模型,就是在设计数据库。
♦️   MongoDB是动态的,非常灵活,只需要在代码中设计数据库即可。
♦️   mongoose这个包可以让你的设计编写过程变得简单。

🌰:持久化存储数据

var Cat = mongoose.model('Cat', { name: String });
for (var i=0; i<10; i++) {
	var kitty = new Cat({ name: '喵喵' + i});
	kitty.save(function(err) {
		if (err) {
			console.log(err);
		} else {
			console.log('meow');
		}
	});
}

可以像写 js 代码一样,将很多条数据直接存入到数据库中。


开始

安装

npm i mongoose

使用

  1. 引包
  2. 连接数据库 (指定连接的数据库不需要存在,当你插入第一条数据之后就会被自动创建出来)
  3. 设计集合结构(表结构)
  4. 将文档结构发布为模型
    mongoose.model 方法就是用来将一个架构发布为 model
    第一个参数:传入一个大写名词字符串,生成小写复数的集合名称
    (例如这里的 User 最终会变为 users 集合名称)
  5. 当我们有了模型构造函数之后,就可以使用这个构造函数对 users 集合中的数据为所欲为了……
//引包
var mongoose = require('mongoose');
var Schema = mongoose.Schema

//连接数据库
mongoose.connect('mongodb://localhost/test',{ useNewUrlParser: true })
//连接状态提示
var db = mongoose.connection;
db.on("error", function (error) {
    console.log("数据库连接失败:" + error);
});
db.on("open", function () {
    console.log("数据库连接成功");
});

//设计表结构
var userSchema = new Schema({
	username: {
		type: String,
		required: true //必须有
	},
	password: {
		type: String,
		required: true
	},
	email: {
		type: String
	}
})

//将文档结构发布为模型
var User = mongoose.model('User', userSchema)

//进行操作(增删改查)
User. ···

新增数据
  • Model.insertMany()
User.insertMany({
    username: "abc",
    password: "123",
    email: "abc@163.com"
}, function (err, data) {
	if(err) {
		console.log("新增失败");
	} else {
		console.log(data);
	}
})

也可以用 .save() 方法新增数据。

查询数据
  • Model.find()
  • Model.findById()
  • Model.findOne()

🌰:

  • 查询全部:
User.find(function(err, data){
	if(err) {
		console.log("查询失败");
	} else {
		console.log(data);
	}
})
  • 按条件查询:
User.find({
	username: "zhangsan"
},function(err, data){
	if(err) {
		console.log("查询失败");
	} else {
		console.log(data);
	}
})

即便得到的只有一条数据,.find() 也返回一个数组。如果想直接返回对象:.findOne(),如果有多条数据,仅返回第一条。


删除数据
  • Model.deleteMany()
  • Model.deleteOne()
  • Model.findByIdAndDelete()
  • Model.findByIdAndRemove()
  • Model.findOneAndDelete()
  • Model.findOneAndRemove()

根据条件删除,一般是 _id ,因为唯一。

User.deleteOne({
	username: "zhangsan"
},function(err, data){
	if(err) {
		console.log("删除失败");
	} else {
		console.log(data);
	}
})
更新数据
  • Model.findByIdAndUpdate()
  • Model.findOneAndUpdate()
  • Model.updateMany()
  • Model.updateOne()
User.findByIdAndUpdate("5d79d25fef20e2207741bdda", {
	password: "root"
}, function(err, data)
	if(err) {
		console.log("更新失败");
	} else {
		console.log(data);
	}
})
User.findOneAndUpdate({
    _id: "5d79d25fef20e2207741bdda",
}, {
    "$set": {
        "password": "root"
    }
}, {
    "new": true
}, function (err, data) {
    if (err) {
        console.log("更新失败");
    } else {
        console.log(data);
    }
})



🔗 相关链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值