📅  最后修改于: 2023-12-03 15:27:06.781000             🧑  作者: Mango
猫鼬(Mongoose)是一个用于NodeJS的MongoDB对象文档映射器(ODM),它提供了许多便利的方式来创建,读取,更新和删除(CRUD)MongoDB记录。
你可以使用npm来安装Mongoose:
npm install mongoose
在使用Mongoose之前,我们需要连接到MongoDB数据库。这可以通过以下方式完成:
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/my_database', { useNewUrlParser: true });
这将连接到本地运行的MongoDB实例并打开名为my_database
的数据库。当然,你需要将链接字符串更改为你自己的MongoDB实例。
在Mongoose中,模式表示MongoDB文档中数据的结构。模式可以通过JavaScript对象定义,并使用Mongoose Schema
类将其转换为Mongoose模式。以下是一个简单的例子:
const mongoose = require('mongoose');
const { Schema } = mongoose;
const blogPostSchema = new Schema({
title: String,
body: String,
comments: [{ body: String, date: Date }],
date: { type: Date, default: Date.now },
hidden: Boolean,
meta: {
votes: Number,
favs: Number
}
});
在本例中,我们已经定义了一个博客文章的模式,它包含一个标题,正文,评论,日期,是否隐藏和有关文章的元数据。
在Mongoose中,模型是数据在MongoDB中进行存储和检索所需的结构。模型可通过JavaScript对象定义,并利用Mongoose model
函数将其转换为Mongoose模型。以下是一个简单的例子:
const mongoose = require('mongoose');
const { Schema } = mongoose;
const blogPostSchema = new Schema({
title: String,
body: String,
comments: [{ body: String, date: Date }],
date: { type: Date, default: Date.now },
hidden: Boolean,
meta: {
votes: Number,
favs: Number
}
});
const BlogPost = mongoose.model('BlogPost', blogPostSchema);
现在我们已经用BlogPost
变量创建了一个Mongoose模型,它可以对MongoDB进行读写操作。
一旦我们有了模型,我们就可以使用它来创建新的MongoDB文档。使用Mongoose,这可以通过以下方式完成:
const mongoose = require('mongoose');
const { Schema } = mongoose;
const blogPostSchema = new Schema({
title: String,
body: String,
comments: [{ body: String, date: Date }],
date: { type: Date, default: Date.now },
hidden: Boolean,
meta: {
votes: Number,
favs: Number
}
});
const BlogPost = mongoose.model('BlogPost', blogPostSchema);
const post = new BlogPost({ title: 'My First Post', body: 'Lorem ipsum dolor sit amet' });
post.save(function (err, post) {
if (err) return console.error(err);
console.log(post);
});
在这个例子中,我们创建了一个名为post
的新Mongoose对象,它包含标题和正文。然后我们调用save
方法,将新的MongoDB文档保存到数据库中。
使用Mongoose可以轻松地从MongoDB数据库中读取文档。以下是一个简单的例子:
const mongoose = require('mongoose');
const { Schema } = mongoose;
const blogPostSchema = new Schema({
title: String,
body: String,
comments: [{ body: String, date: Date }],
date: { type: Date, default: Date.now },
hidden: Boolean,
meta: {
votes: Number,
favs: Number
}
});
const BlogPost = mongoose.model('BlogPost', blogPostSchema);
BlogPost.find(function (err, posts) {
if (err) return console.error(err);
console.log(posts);
});
在本例中,我们使用find
方法从MongoDB数据库中检索所有博客文章。当执行成功时,我们将在控制台中打印所有检索到的博客文章。
使用Mongoose,你可以轻松地更新MongoDB中的文档。以下是一个简单的例子:
const mongoose = require('mongoose');
const { Schema } = mongoose;
const blogPostSchema = new Schema({
title: String,
body: String,
comments: [{ body: String, date: Date }],
date: { type: Date, default: Date.now },
hidden: Boolean,
meta: {
votes: Number,
favs: Number
}
});
const BlogPost = mongoose.model('BlogPost', blogPostSchema);
BlogPost.findOneAndUpdate({ title: 'My First Post' }, { hidden: true }, function (err, post) {
if (err) return console.error(err);
console.log(post);
});
在这个例子中,我们使用findOneAndUpdate
方法更新了标题为My First Post
的博客文章,将hidden
属性设置为true
。
与创建、读取和更新对象类似,使用Mongoose可以轻松地从MongoDB数据库中删除文档。以下是一个简单的例子:
const mongoose = require('mongoose');
const { Schema } = mongoose;
const blogPostSchema = new Schema({
title: String,
body: String,
comments: [{ body: String, date: Date }],
date: { type: Date, default: Date.now },
hidden: Boolean,
meta: {
votes: Number,
favs: Number
}
});
const BlogPost = mongoose.model('BlogPost', blogPostSchema);
BlogPost.deleteOne({ title: 'My First Post' }, function (err) {
if (err) return console.error(err);
console.log('Post deleted successfully');
});
在这个例子中,我们使用deleteOne
方法删除了标题为My First Post
的博客文章。
猫鼬是一个功能强大且易于使用的MongoDB对象文档映射器。使用猫鼬,你可以轻松地创建、读取、更新和删除MongoDB文档,并且有很多其他的高级功能可供使用。在开始使用猫鼬之前,确保你已经安装了它,并已成功连接到MongoDB数据库。然后,你可以开始定义模式、创建模型以及创建、读取、更新和删除MongoDB文档。