Nodejs 新手问题 mongoose save记录会跑到那个集合里?

Nodejs 新手问题 mongoose save记录会跑到那个集合里?

用mongoose去链接mongoDB, mongoose.connect(‘mongodb://localhost/test’); 连接到了本地的test库,我看例子,下面就直接可以save,find… 没有地方表示在操作哪一个集合? 一个save操作结束后,文档会放到哪个集合里呢?

3 回复

Node.js 新手问题:Mongoose Save 记录会跑到哪个集合里?

背景介绍

在使用 Mongoose 连接到 MongoDB 数据库时,你可能会遇到一个问题:当你执行一个 save 操作时,数据会被保存到哪个集合中?本文将详细解释这个问题,并提供一些示例代码来帮助你更好地理解。

解释

Mongoose 是一个基于 Node.js 的对象模型工具(ODM),它用于操作 MongoDB 数据库。Mongoose 通过定义 Schema 来描述数据结构,并且通过 Model 来对这些数据进行增删改查等操作。

当你使用 Mongoose 定义一个 Schema 并创建对应的 Model 时,你可以指定这个 Model 对应的集合名称。默认情况下,Mongoose 会将集合名称设置为 Schema 名称的小写复数形式。例如,如果你定义了一个名为 UserSchema 的 Schema,那么默认情况下,这个 Schema 对应的集合名称将是 users

示例代码

const mongoose = require('mongoose');

// 连接到本地的 MongoDB 数据库
mongoose.connect('mongodb://localhost/test', { useNewUrlParser: true, useUnifiedTopology: true });

// 定义一个 Schema
const UserSchema = new mongoose.Schema({
    name: String,
    age: Number
});

// 创建一个 Model
const User = mongoose.model('User', UserSchema);

// 创建一个新的用户实例并保存到数据库
const newUser = new User({ name: 'Alice', age: 25 });
newUser.save((err) => {
    if (err) {
        console.error(err);
    } else {
        console.log('User saved successfully!');
    }
});

在这个例子中:

  1. 我们首先使用 mongoose.connect 方法连接到本地的 MongoDB 数据库。
  2. 然后我们定义了一个名为 UserSchema 的 Schema,它包含两个字段:nameage
  3. 接下来,我们使用 mongoose.model 方法创建了一个名为 User 的 Model,它基于 UserSchema
  4. 最后,我们创建了一个新的用户实例 newUser 并调用 save 方法将其保存到数据库中。

结论

当执行 save 操作时,数据会自动保存到与 Schema 相关联的集合中。在上述例子中,数据会被保存到 users 集合中。如果你希望更改集合名称,可以在定义 Model 时显式地指定集合名称:

const User = mongoose.model('User', UserSchema, 'my_users');

这样,数据将会被保存到 my_users 集合中。


mongoose.model(‘User’, UserSchema);

把User变成全小写+"s", 变成集合名。知道了

在使用 Mongoose 进行 MongoDB 操作时,每个模型都与特定的集合关联。当你创建一个 Mongoose 模型时,你可以指定它将使用的集合名称。如果没有显式指定,Mongoose 会默认使用模型名称的小写复数形式作为集合名称。

例如,如果你定义了一个名为 User 的模型:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

// 定义用户模型
const UserSchema = new Schema({
    name: String,
    email: String,
});

// 创建模型,并指定集合名称(可选)
const User = mongoose.model('User', UserSchema, 'users');

module.exports = User;

在这个例子中,我们定义了一个 User 模型,并且指定了该模型将映射到 MongoDB 中的 users 集合。如果你不指定第三个参数(即集合名称),则默认会使用 users 作为集合名称。

接下来,你可以通过以下方式保存数据到 users 集合:

const User = require('./models/User'); // 假设 User 模型在 models 文件夹下的 User.js

const newUser = new User({
    name: 'Alice',
    email: 'alice@example.com'
});

newUser.save((err) => {
    if (err) {
        console.error(err);
    } else {
        console.log('User saved successfully!');
    }
});

在这个例子中,当调用 newUser.save() 时,Mongoose 会自动将新创建的用户对象插入到 users 集合中。

总结来说,Mongoose 会在保存数据时根据模型名称或你指定的集合名称将数据存入对应的集合。

回到顶部