const mongoose = require("mongoose");
mongoose
.connect("mongodb://localhost/xx", {
useNewUrlParser: true,
useUnifiedTopology: true,
})
.then(() => console.log("数据库连接成功"))
.catch((err) => console.log("数据库连接失败", err));
1.首先创建集合规则
2.告诉数据库你创建的规则
3.就可以向数据库写入
//创建集合
//1.创建集合的规则 有哪些属性 值的类型
const rule = new mongoose.Schema({
name: String,
age: Number,
sex: String,
});
//2. 将创建的规则让数据库去承认
const Information = mongoose.model("Information", rule); // informations
// 3.根据规则写入数据 创建文档
Information.create(
{
name: "mm",
age: 25,
sex: "女",
},
(err, result) => {
//err 是错误信息
console.log(err);
//result 是插入数据的信息
console.log(result);
}
);
1.删
//查找出来并且删除 删除第一个符合的文档
// User.findOneAndDelete({ _id: "5c09f2d9aeb04b22f846096b" }).then((result) =>
// console.log(result)
// );
//删除多个文档 括号里填写范围 如果括号为空代表全部删除
User.deleteMany({ name: "李四" }).then((result) => console.log(result));
2.改
前面的是范围 后面是更新的内容
//更新一个文档
User.updateOne({ name: "张三" }, { name: "cx", age: "18" }).then((result) =>
console.log(result)
);
//更新多个文档
User.updateMany(
//$gt 大于 $lt小于
{ age: { $gt: 15, $lt: 35 } },
{ name: "many", age: "99" }
).then((result) => console.log(result));
3.查
// 查询用户集合中的所有文档
// User.find().then(result => console.log(result));
// 通过_id字段查找文档
// User.find({_id: '5c09f267aeb04b22f8460968'}).then(result => console.log(result))
// findOne方法返回一条文档 默认返回当前集合中的第一条文档
// User.findOne({name: '李四'}).then(result => console.log(result))
// 查询用户集合中年龄字段大于20并且小于40的文档 $gt 大于 $lt小于
// User.find({age: {$gt: 20, $lt: 40}}).then(result => console.log(result))
// 查询用户集合中hobbies字段值包含足球的文档
// User.find({hobbies: {$in: ['足球']}}).then(result => console.log(result))
// 选择要查询的字段
// User.find().select('name email -_id').then(result => console.log(result))
// 根据年龄字段进行升序排列
// User.find().sort('age').then(result => console.log(result))
// 根据年龄字段进行降序排列
// User.find().sort('-age').then(result => console.log(result))
// 查询文档跳过前两条结果 限制显示3条结果 skip跳过多少 limit限制显示多少
const postSchema = new mongoose.Schema({
title: {
type: String,
// 必选字段
required: [true, "请传入文章标题"],
// 字符串的最小长度
minlength: [2, "文章长度不能小于2"],
// 字符串的最大长度
maxlength: [5, "文章长度最大不能超过5"],
// 去除字符串两边的空格
trim: true,
},
age: {
type: Number,
// 数字的最小范围
min: 18,
// 数字的最大范围
max: 100,
},
publishDate: {
type: Date,
// 默认值
default: Date.now,
},
category: {
type: String,
// 枚举 列举出当前字段可以拥有的值
enum: {
values: ["html", "css", "javascript", "node.js"],
message: "分类名称要在一定的范围内才可以",
},
},
author: {
type: String,
validate: {
validator: (v) => {
// 返回布尔值
// true 验证成功
// false 验证失败
// v 要验证的值
return v && v.length > 4;
},
// 自定义错误信息
message: "传入的值不符合验证规则",
},
},
});
当数据库中两个集合要进行关联的时候 要在创建集合的时候就开始准备
const userSchema = new mongoose.Schema({
name: String,
age: Number,
sex: String,
});
const artSchema = new mongoose.Schema({
name: {
type: String,
//必填
required: true,
//最短
minlength: 3,
//最长
maxlength: 8,
},
author: {
//关联的方式
type: mongoose.Schema.Types.ObjectId,
//关联的名字
ref: "Use",
},
});
访问的时候要用populate
Art.find()
.populate("author")
.then((result) => console.log(result));