Mongoose自动生成复数集合名的逻辑及查询方法咨询
Mongoose集合自动命名逻辑与查询方法
一、自动命名的底层逻辑
Mongoose默认会对模型名称做两步转换:
- 将你传入
mongoose.model()的首字母大写单数名称转为全小写 - 再将其处理为英语复数形式,作为最终的集合名称
比如你定义的Movie模型,就会被转成movies;如果是Person模型,会自动转成people(处理不规则复数),Child则会变成children。
要是不想用这套默认规则,定义Schema时可以手动指定集合名,写法如下:
const movieSchema = new mongoose.Schema( { /* 你的字段定义 */ }, { collection: 'my_custom_movies' } // 手动指定集合名 ); const Movie = mongoose.model('Movie', movieSchema);
这种情况下,集合名就是你指定的my_custom_movies,不会走自动复数化流程。
二、查询模型对应的集合名称
有三种实用方法:
- 直接通过模型的
collection.name属性获取(最准确,覆盖手动指定的情况):console.log(Movie.collection.name); // 输出对应的集合名,比如'movies' - 在MongoDB终端里执行
show collections命令,列出当前库所有集合,结合模型的业务含义对应查找 - 若没手动指定集合名,也可以根据Mongoose的复数规则推断,但不如第一种方法可靠
内容的提问来源于stack exchange,提问作者Famien
相关产品推荐
相关产品推荐

