You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Mongoose查询是否必须先创建模型?无Schema如何查询集合?

Mongoose查询相关问题解答

1. 执行数据库查询必须先创建Model吗?

不是必须的。虽然Mongoose的常规用法是基于Schema定义Model,再通过Model操作集合(就像你给出的官方示例那样),这种方式能利用Schema的数据校验、中间件、虚拟属性等特性,但你也可以直接绕过Model,直接操作数据库集合。

官方示例的Model查询方式:

const Person = mongoose.model('Person', yourSchema);

// 查询姓氏为'Ghost'的人,只返回name和occupation字段
const person = await Person.findOne({ 'name.last': 'Ghost' }, 'name occupation');

2. 不定义Schema,直接通过集合名称查询的方法

你可以通过Mongoose的connection对象获取目标集合,然后调用MongoDB原生驱动的查询方法,代码示例如下:

// 获取指定集合
const personCollection = mongoose.connection.collection('persons');

// 原生查询:查询姓氏为'Ghost'的文档,只返回name和occupation字段
const person = await personCollection.findOne(
  { 'name.last': 'Ghost' },
  { projection: { name: 1, occupation: 1, _id: 0 } }
);

注意:这种方式不会用到Mongoose的Schema相关特性,比如数据校验、自动类型转换,完全遵循原生MongoDB驱动的操作逻辑。

内容的提问来源于stack exchange,提问作者TungTung

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 19:37:35