Mongoose 查询

Mongoose 查询

Mongoose 是用于Node.js环境的 MongoDB 对象建模和处理。

Mongoose查询 是用于执行CRUD(创建读取更新和删除)操作的不同静态帮助函数,对于任何数据库都非常重要。静态帮助函数返回一个mongoose查询对象。 mongoose查询首先异步执行,然后调用传递给它的回调函数。另一种方法是使用负责执行查询的同步函数。

语法: 在模型上调用任何查询函数以获取查询对象,如下所示:

const Student = mongoose.model('Student', studentSchema);

Student.findOneAndUpdate({ name: 'John' }, 
  function (err, student) {
    if (err) return handleError(err);
    else{
      // Updated successfully
    }
});

以下是不同的查询:

  • 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(): 此查询接受一个过滤器和更新字段及其值的参数,然后更新数据库中的任意一个匹配条目。

    创建应用程序和安装模块: 我们将创建一个包含字段姓名、年龄和出生日期的学生模型。然后,我们将使用mongoose将三个文档保存到MongoDB。最后,如果他们的年龄大于12岁,我们将对它们进行更新。本例中使用了Node.js和NPM,所以需要先安装。

步骤1: 创建文件夹并进行初始化:

npm init

步骤2 :在项目中安装mongoose。

npm i mongoose

项目结构: 项目的结构如下:

Mongoose 查询

示例: 创建一个schematype,然后创建一个model,并创建三个具有一些值的不同文档。然后调用save函数来保存文档。我们可以创建一个save函数来保存学生文档,而不是创建个别文档。然后我们将调用一个函数,查询年龄大于或等于12岁的文档。我们将将他们设为在高中学习的字段highschool=true。

index.js

const mongoose = require("mongoose"); 
  
// Database connection 
mongoose.connect("mongodb://localhost:27017/geeksforgeeks",); 
  
// Creating Schema 
const studentSchema = new mongoose.Schema({ 
    name: { type: String, required: true }, 
    age: { type: Number, default: 8 }, 
    highschool: { type: Boolean, default: false }, 
}); 
  
// Student model 
const Student = mongoose.model("Student", studentSchema); 
// Creating Student document from Model 
  
// function to save in database 
const saveStudent = async (name, age) => { 
    let s = new Student({ 
        name: name, 
        age: age, 
    }); 
    await s.save(); 
    console.log("student document saved in database\n 
        Student name:", s.name); 
}; 
  
const updateHighSchool = async () => { 
    await Student.updateMany( 
        { age: { $gt: 12 } },  
        { highschool: true }); 
    console.log("Updated student fields"); 
}; 
  
const start = async () => { 
    await saveStudent("Ajay", 5); 
    await saveStudent("Rajesh", 13); 
    await saveStudent("Manav", 15); 
    updateHighSchool(); 
}; 
  
start(); 

步骤3:

现在在终端/命令提示符中使用以下命令运行代码,以运行文件。

node index.js

输出:

Mongoose 查询

在MongoDB中的文档如下:有两个学生在高中,但不包括Ajay。之前所有的都设置为false,但其中两个被更新了。

Mongoose 查询

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程