Schema和Model
前面已经介绍了如何连接MongoDB。接下来就开始介绍Schema和Model的用法,具体如下。
Schema
首先在项目01.mongoose项目下右键,新建一个JavaScripy文件,命名为mongoose_demo。
Schema等等信息的详细教程也可以看官网。
当你路过看到我的博客的时候,说不定用法会更新哦。而我当时看到的用法如下:
import mongoose from 'mongoose';
const { Schema } = mongoose;
const blogSchema = new Schema({
title: String, // String is shorthand for {type: String}
author: String,
body: String,
comments: [{ body: String, date: Date }],
date: { type: Date, default: Date.now },
hidden: Boolean,
meta: {
votes: Number,
favs: Number
}
});
我们输入的测试代码则如下:
import mongoose from 'mongoose';
const mongoose = require("mongoose");
mongoose.connect('mongodb://127.0.0.1/mongoose_test', {useNewUrlParser: true, useUnifiedTopology: true});
mongoose.connection.once("open", function () {
console.log("连接成功");
});
//将mongoose赋值给{Schema}
const {Schema} = mongoose;
//创建Schema(约束/模式)对象
const stuSchema = new Schema({
name: String,
age: Number,
//配置复杂内容,传对象
sex:{
type:String,
default:"female"
},
address: String
});
Model
单纯只有Schema还不够,所以我们再看看怎么创建Model,官网给出的案例是:
const Blog = mongoose.model('Blog', blogSchema);
// ready to go!
因此,我们在前面的基础上,加入代码:
//通过Schema来创建Model
//Model代表的是数据库的集合,通过Model才能对数据库进行操作
//mongoose.model(modelName, schema)
//modelname就是要映射的集合
const StuModel = mongoose.model("student", stuSchema);
这个时候还没完,我们插入一个文档,继续在最后边加代码:
//向数据库中插入文档
//StuModel.create(document, function(err){});
StuModel.create({
name:"孙悟空",
age:18,
sex:"male",
address:"花果山"
},function (err) {
if(!err){
console.log("插入成功");
}
});
然后运行项目。
这个时候,在我们的图形界面可以看到,多了一个mongoose_test数据库。
输入指令:
use mongoose_test;
show collections;
db.students.find({});
可以看到,说明我们已经成功了。
__v是默认添加的,我们无需理会。
这里,细心的朋友可能还会发现,刚才写的是student,怎么他的集合就变成students了,其实这个就是mongoose的神奇之处,他会自动帮我们把单数变成复数,如果我们写students,那么他将不会改变,而我们写child,他会帮我们变成children。
接着,我们改一下代码,把创建文档的语句改为:
StuModel.create({
name:"白骨精",
age:18,
address:"白骨洞"
},function (err) {
if(!err){
console.log("插入成功");
}
});
再次执行程序,然后去mongodb下查看现有数据,如下:
可以看到,他的sex自动生成了一个female,这是因为我们之前的代码有设置一个default默认值。