正文
准备工作,创建Schema约束对象和连接数据库。
//这里没有使用es6的import导入语法,因为没准备好环境,所以用了Node的require。
const mongoose = require('mongoose')
const Schema = mongoose.Schema
mongoose.connect('mongodb://127.0.0.1:27017/mytest', {useNewUrlParser: true, useUnifiedTopology: true})
mongoose.connection.once("open", () => {
console.log(`数据库已连接成功,Server is running at:http://127.0.0.1:27017`)
})
//创建一个Schema对象
const stuSchema = new Schema({
name: String,
age: Number,
gender: {
type: String,
default: "female"
},
address: String
});
const stuModel = mongoose.model('students', stuSchema);
有了Model,我们就可以对数据库进行增删改查的操作了。
create()方法,创建文档。
Model.create(doc(s),[callback])
-
含义:用来创建一个或者多个文档并添加到数据库当中。
-
参数:
第一个参数doc(s) ,后面的s代表是复数多个的意思,证明这个位置可以传一个文档对象,也可以传多个文档对象的数组。
第二个参数[callback],这个位置返回的是一个回调函数,当操作完成后,调用该函数。
-
create方法模板:
stuModel.create([], err => {
if (!err) {
console.log("文档插入成功")
}
})
-
如果安装了脚手架或者有babel转译环境,可以使用ES6语法,添加一个await关键字,await后面接表达式。
await stuModel.create([], err => {
if (!err) {
console.log("文档插入成功")
}
})
stuModel.create([
{
name: "小明",
age: 22,
gender: "male",
address: "广东深圳"
},
{
name: "小红",
age: 20,
gender: "female",
address: "广东东莞"
}
], err => {
if (!err) {
console.log("文档插入成功")
}
})
-
通过node环境运行我们的js代码。
-
打开数据库可视化工具查看数据有没有插入成功。
find()方法,查询文档。
Model.find(conditions, [projection], [options], [callback])
-
查询所有符合条件的文档,总会返回一个数组。
-
参数:
第一个参数conditions:查询的条件。
第二个参数[projection]:投影,需要获取到的字段,即你想要显示多少个字段,是全部显示呢?还是过滤掉一些字段(属性)。
第三个参数[options]: 查询的选项(例如常用的skip和limit)。
第四个参数[callback](必选): 回调函数,查询结果会通过回调函数返回,如果不传回调函数,压根不会查询。
-
find方法模板。
stuModel.find({name: "小红"}, (err, docs) => {
if (!err) {
console.log(docs)
}
})
比如我们下面的这个例子(使用对象形式传递),只想显示_id属性字段和age属性字段,其他的通通过滤掉。
node环境执行代码,查看。