Mongoose Document API
Mongoose 文档 对应于 MongoDB 文档 的一对一关系。Mongoose 文档基本上是模型的一个实例。
首先需要安装 mongoose 模块:
步骤1: 您需要访问 mongoose 模块的链接。您可以使用以下命令进行安装。
npm install mongoose
步骤2: 完成后,创建一个文件夹,并在文件夹中创建一个文件,例如, index.js , 使用以下命令来运行该文件。
node index.js
步骤3: 同时也不要忘记在另一个终端标签页上使用以下命令启动MongoDB服务器。
mongod
现在,让我们看一下它是如何工作的:
1. 创建一个新的文档: 要创建一个新的文档,您需要创建一个 mongoose model,然后使用该 model,您可以创建一个新的文档。要将其保存到数据库中,你需要使用 save() 方法保存一个文档,或者使用 insertMany() 方法插入多个文档。
示例: 在下面的示例中,我们将创建一个新的文档。打开 index.js 文件,然后写入以下代码:
const mongoose = require("mongoose");
// Database connection
mongoose.connect("mongodb://127.0.0.1:27017/geeksforgeeks", {
useNewUrlParser: true,
useUnifiedTopology: true,
});
// User model
const User = mongoose.model("User", {
name: { type: String },
age: { type: Number },
});
// Creating a new dummy user document
const newUser = new User({
name: "Ayush",
age: 20,
});
// Save it to the database
newUser.save((err, res) => {
if (err) return handleError(err);
else return console.log("Result: ", res)
});
// For inserting multiple documents
User.insertMany(
[
{
name: "Rishu",
age: 21,
},
{
name: "Megha",
age: 24,
},
{
name: "Aman",
age: 16,
},
{
name: "Riya",
age: 18,
},
],
(err, res) => {
if (err) return handleError(err);
else return console.log("Result: ", res)
}
);
运行该应用程序的步骤: 在终端中输入以下代码启动服务器:
node index.js
输出:
以上是数据库中的示例数据 在函数执行后 ,您可以使用 MongoDB compass 或 终端 来查看数据库:
2. 检索文档: 要检索一个 文档 ,我们需要使用 findOne() 方法。它以条件作为参数,这是完全可选的。
示例: 在下面的示例中,我们将检索文档。打开index.js文件并写入以下代码:
const mongoose = require('mongoose');
// Database connection
mongoose.connect('mongodb://127.0.0.1:27017/geeksforgeeks', {
useNewUrlParser: true,
useUnifiedTopology: true
});
// User model
const User = mongoose.model('User', {
name: { type: String },
age: { type: Number }
});
// Find only one document matching
// the condition(age >= 21)
User.findOne({ age: { $gte: 21 } }, function (err, res) {
if (err) {
console.log(err)
}
else {
console.log("Result : ", res);
}
});
运行应用程序的步骤: 在终端中输入以下代码来运行服务器:
node index.js
输出:
3. 更新文档: 要更新一个 文档 ,你需要使用 updateOne() 方法或 findOneAndUpdate() 方法。它们之间的关键区别是 updateOne() 不返回已更新的文档,而 findOneAndUpdate() 返回已更新的文档。
示例: 在下面的示例中,我们将要更新文档。打开index.js文件并编写以下代码:
const mongoose = require('mongoose');
// Database connection
mongoose.connect('mongodb://127.0.0.1:27017/geeksforgeeks', {
useNewUrlParser: true,
useUnifiedTopology: true
});
// User model
const User = mongoose.model('User', {
name: { type: String },
age: { type: Number }
});
// Update only one document matching
User.updateOne({ name: "Rishu" },
{ age: 22 }, function (err, res) {
if (err) {
console.log(err)
}
});
// Or you can use findOneAndUpdate()
const doc = User.findOneAndUpdate(
{ name: "Rishu" },
{ age: 22 },
// if 'new' isn't true then findOneAndUpdate()
// will return the document as it was
// before it was updated.
{ new: true },
function (err, res) {
if (err) {
console.log(err)
}
else {
console.log("Result : ", res);
}
});
运行应用程序的步骤: 在终端中输入以下代码以启动服务器:
node index.js
输出:
如下所示,文档已更新:
4. 覆写文档: 要覆写一个文档,我们可以使用 replaceOne() 方法。这个 ‘replaceOne()’ 方法接收2个必填参数、一些可选参数和一个回调函数。第一个参数是你想要覆写的文档,第二个参数是新的文档对象。
示例: 在下面的示例中,我们将要覆写文档。打开index.js文件并写入以下代码:
const mongoose = require('mongoose');
// Database connection
mongoose.connect('mongodb://127.0.0.1:27017/geeksforgeeks', {
useNewUrlParser: true,
useUnifiedTopology: true
});
// User model
const User = mongoose.model('User', {
name: { type: String },
age: { type: Number }
});
// OverWrite a document using `replaceOne()` method
User.replaceOne(
{ name: "Rishu" },
{ name: "Raja", age: 19 }, (err) => {
if (err) return console.error(err);
else {
console.log('{ name: "Rishu" } is replaced
with {name: "Raja", age: 19}')
}
});
运行应用的步骤:
在终端中输入以下代码启动服务器:
node index.js
输出:
如下所示,文档已被覆盖:
到目前为止,我们已经介绍了最重要的 mongoose文档API 。还有其他可访问的API,我将在未来的文章中讨论。