//mongoose 第三方包
npm install mongoose
//提供connect方法连接数据库
const mongoose = require("mongoose");
mongoose
.connect("mongodb://localhost/testdb", { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => console.log("数据库连接成功"))
.catch((err) => console.log("数据库连接失败", err));
// 设置集合规则 .Schema(列表名:数据类型)
const courseSchema = new mongoose.Schema({
name: String,
author: String,
isPublished: Boolean,
});
//创建集合并使用规则 .model(集合名(实际会小写然后+s courses),规则)
const Course = mongoose.model("Course", courseSchema);
//创建集合实例创建文档
const course = new Course({
name: "演员的自我修养",
author: "人",
isPublished: true,
});
//将数据保存到数据库中
course.save();
//集合的create方法创建文档
Course.create(
{
name: "演员的自我修养",
author: "人",
isPublished: true,
},
(err, doc) => {
console.log(err);
console.log(doc);
}
);
//集合的create方法创建文档 返回promise一样可以通过promise的then catch
Course.create({
name: "演员的自我修养",
author: "人",
isPublished: true,
})
.then((doc) => console.log(doc))
.catch((err) => console.log(err));
//导入数据 mongoimport 需要设置环境变量,在mongoDB/bin/中
//mongoimport -d 数据库名字 -c 合集名字 --file 要导入的数据文件
//查询文档 集合.find() 为空就查找所有文档 ,返回的结果一定是数组
Course.find().then((res) => console.log(res));
Course.find({ _id: "xxxxxxxxxxxxxxx" }).then((res) => console.log(res));
//.findOne() 查找一条
Course.findOne().then((res) => console.log(res)); //返回第一条数据
//返回第一个name为xxx的文档
Course.findOne({ name: "xxx" }).then((res) => console.log(res));
//大于> 小于$lt
Course.find({ age: { $gt: 20, $lt: 50 } }).then((res) => console.log(res));
//包含$in 张或王
Course.find({ name: { $in: ["张", "王"] } }).then((res) => console.log(res));
//查询字段name和age -字段 表示不查询
Course.find()
.select("name age -_id")
.then((res) => console.log(res));
//查询结果排序 根据age升序 -age 降序
Course.find()
.sort("age")
.then((res) => console.log(res));
//skip()跳过多少条数据 limit()限制查询数量
Course.find()
.skip(1)
.limit(2)
.then((res) => console.log(res));
//findOneAndDelete({}) 删除第一个符合条件的 返回promise对象,res会是删除的文档
Course.findOneAndDelete({ name: "王" }).then((res) => console.log(res));
//deleteMany({}) 删除多个 返回promise对象,res会是删除的文档
Course.deleteMany({ name: "王" }).then((res) => console.log(res));
//updateOne({条件},{修改的值}) 更新一条 返回promise对象
Course.updateOne({ name: "张三" }, { name: "李四" }).then((res) => console.log(res));
//updateMant({条件},{修改的值}) 更新多个 全部改为18 返回promise对象
Course.updateOne({}, { age: 18 }).then((res) => console.log(res));
//-------------------------------------------------------------------//
const Book = mongoose.model(
"Book",
new mongoose.Schema({
name: {
type: String,
//必传字段 required:true
required: [true, "书名为必须"],
minlength: 2, //最小长度
maxlength: 5, //最大长度
trim: true, //去除两端空格 String方法里也有
},
age: {
type: Number,
min: 2, //数值最小2
max: 5, //数值最大5
},
date: {
type: Date,
//默认值
default: Date.now, //当前时间
},
category: {
type: String,
enum: ["哲学", "小说", "诗文"], //设定当前字段可以拥有的值
},
author: {
type: String,
//自定义验证器 返回布尔值
validate: (v) => {
return v && v == "Fc";
},
//自定义错误信息
message: "信息传入错误",
},
author2: {
//使用ID将Book集合和Course集合进行关联
type: mongoose.Schema.Types.ObjectId,
ref: "Course",
},
})
);
Book.create({
//文档实例 date会自动输出
name: "自我修养",
age: 4,
})
.then((res) => console.log(res))
.catch((err) => {
//获取错误对象
const error = err.errors;
//循环错误信息对象
for (var attr in err) {
console.log(err[attr]["message"]);
}
});
Book.find()
//关联查询,要输入关联的字段
.populate(author2)
.then((res) => console.log(res));
MongoDB一些基础方法
猜你喜欢
转载自blog.csdn.net/MikazukiMo/article/details/105620727
今日推荐
周排行