Mongoose 查询 API

Mongoose 查询 API

Mongoose 是一个工具,允许您在 MongoDB 集合中定义和处理文档。Mongoose 最重要的一个方面是其 查询 API ,提供了一组方法用于构建和执行 MongoDB 数据库中的查询。在本文中,我们将看看 Mongoose 中一些常见的查询 API 方法以及如何在您的应用程序中使用它们。

Mongoose 查询 API 概述

Mongoose 在其模型上提供一些静态方法,用于在集合中执行 CRUD(创建、读取、更新、删除)操作。这些方法返回一个查询对象,可用于指定其他约束条件或执行查询。

  • Model.deleteMany() 从数据库中删除与指定条件匹配的多个文档。
  • Model.deleteOne() 从数据库中删除与指定条件匹配的单个文档。
  • Model.find() 从数据库中检索与指定条件匹配的一个或多个文档。
  • Model.findById() 根据其唯一的 _id 字段检索单个文档。
  • Model.findByIdAndDelete() 根据其 _id 字段找到并从数据库中删除单个文档。
  • Model.findByIdAndRemove() 根据其 _id 字段找到并从数据库中删除单个文档。
  • Model.findByIdAndUpdate(): 根据其 _id 字段找到并更新数据库中的单个文档。
  • Model.findOne() 检索与指定条件匹配的单个文档。
  • Model.findOneAndDelete() 找到与指定条件匹配的单个文档并从数据库中删除它。
  • Model.findOneAndRemove() 找到与指定条件匹配的单个文档并从数据库中删除它。
  • Model.findOneAndReplace() 找到与指定条件匹配的单个文档,并使用新文档替换它。
  • Model.findOneAndUpdate() 找到与指定条件匹配的单个文档并更新它在数据库中。
  • Model.replaceOne() 使用新文档替换数据库中与指定条件匹配的单个文档。
  • Model.updateMany() 更新数据库中与指定条件匹配的多个文档。
  • Model.updateOne() 更新数据库中与指定条件匹配的单个文档。

前提条件:

  • 必须安装MongoDB。
  • 必须安装NodeJs。

在我们的应用程序中连接到MongoDB数据库: 在我们继续教程之前,让我们首先将MongoDB连接到我们的应用程序并创建模式。然后可以使用创建方法向文档中添加元素。

const mongoose = require("mongoose"); // npm i mongoose

mongoose.connect("mongodb://127.0.0.1:27017/gfg");

const UserSchema = new mongoose.Schema({
  name: String,
  email: String,
  age: Number,
});

const User = mongoose.model("geeksforgeeks", UserSchema);

User.create(
  { name: "Rhythm Shandlya",
    age: 20,
    email: "armaanbgp@gmail.com" },
  function (err, user) {
    if (err) console.error(err);
    else console.log(user);
  }
);

Mongoose 查询 API

如何执行Mongoose查询API

由于其灵活性,我们可以以多种方式执行查询API:

1.使用回调函数: 在这种方法中,将回调函数传递给查询函数。当查询获取完成时,将执行此回调函数。

语法:

Model.findOne(querryObject, callbackFunction);

示例:

User.findOne({ name: "Rhythm Shandlya" }, function (err, user) {
    if (err) return handleError(err);
    else console.log(user);
});

输出:

Mongoose 查询 API

2. 使用.then()和.catch():

语法:

Model.findById(userId).then(user){}.catch(error){}

示例:

User.findById('63b1332c8a41f608100eeffd')
    .then(function (user) {
        console.log(user);
    })
    .catch(function (err) {
        console.log(user);
});

输出:

Mongoose 查询 API

3. 使用 async await 语法:

语法:

const user = await User.findOneAndUpdate(querryObject,valueToBeUpdated,options);

示例:

const findUser = async function () {
    try {
        const user = await User.findOneAndUpdate(
            { name: "Rhythm Shandlya" },
            { age: 24 },
            { new: true }
        );
        console.log(user);
    } catch (e) {
        console.log(e);
    }

};

findUser();

输出:

Mongoose 查询 API

Mongoose查询与Promises不同:

Mongoose查询并不是promise。然而,它们有一个.then()函数,可以用来将查询结果处理为一个promise。

以下是使用Mongoose查询和.then()函数的示例:

User.findOne({ name: 'Rhythm Shandlya' }).then((doc) => {
    console.log(doc);
});

.then() 函数在查询完成时被调用,并将查询的结果作为参数传递。如果查询成功,结果将是找到的文档。如果查询失败,结果将为null。

Mongoose 查询与原生 JavaScript promises 有一些不同:

  • Mongoose 查询在创建时不会立即执行。您需要调用像 .exec() 或 .then() 这样的方法来执行查询。
  • Mongoose 查询具有许多其他方法,例如 .sort() 和 .limit(),可链接到查询以指定其他约束条件。
  • Mongoose 查询设计用于与 MongoDB 一起使用,而原生 JavaScript promises 则更为通用。

在查询对象上进行排序、选择和限制操作:

sort() 函数允许您指定查询结果应按照哪个顺序返回。您可以使用逗号分隔的字段列表来指定排序顺序,其中 1 表示升序,-1 表示降序。例如:

Model.find({}).sort({ field1: 1, field2: -1 });

limit()函数允许您指定查询应返回的最大结果数。 例如:

Model.find({}).limit(10);

select()函数允许您指定查询结果中应包含哪些字段。您可以使用此函数来排除某些字段或仅包含特定字段。例如:

Model.find({}).select({ field1: 1, field2: 1 });

这些函数可以链接在一起以创建更复杂的查询。例如:

User.find({})
    .limit(10)
    .sort({ age: -1 })
    .select("age name")
    .then((users) => {
        console.log(users);

});

输出:

Mongoose 查询 API

参考: https://mongoosejs.com/docs/queries.html

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程