如何将猫鼬模型与 Express.js 应用程序中正确的 MongoDB 集合相关联?

How to associate a mongoose model with the right MongoDB collection in Express.js app?

如何在 express js 应用程序中使用 mongoose ORM 指向 mongodb 中的特定集合。

不适用

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

var personSchema = new Schema({
 name: String,
 age: Number
});

module.exports = mongoose.model('person', personSchema);

考虑到我的 mongo 数据库有多个集合,那么我上面的代码将如何指向特定的集合。

通常我们遵循在mongoDB中将集合命名为复数的约定。例如在 MongoDB 中,我们创建 users table,但在 Node.js 中使用单数。所以出口将是:

module.exports = mongoose.model('users',UserSchema)

而在其他脚本中,我们要求如下: const User=require('<pathToModel>/user')

这意味着我们将模型称为 User,它基于 UserSchema 并且与之关联的集合是 users

在您的代码中,您可以这样做:

module.exports = mongoose.model('person', personSchema); 

如果您有一个特定的集合,您希望将基于特定模型的文档放入其中,您可以使用 mongoose.model('person', personSchema, collection)

或者,您可以在架构定义中命名所需的关联集合:

var dataSchema = new Schema({..}, { collection: 'data' });

https://mongoosejs.com/docs/guide.html

非常抱歉,我选择的答案不准确。我无法删除它,因为它已被接受。准确回答你的问题是,mongoose.model('person', personSchema);会自动创建一个复数小写版本的模型name.In这种情况下,它会自动创建一个collectionpersons在mongoDB 如果它还不存在。 如果你想覆盖这个默认行为,你可以这样做:

var personSchema = new Schema({ 名称:字符串, 年龄:数 }, { collection:'people' });

mongoose.model( 'person', personSchema, 'people' ) 所以你称它为人,但 collection 名字将是人