如何将猫鼬模型与 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' });
非常抱歉,我选择的答案不准确。我无法删除它,因为它已被接受。准确回答你的问题是,mongoose.model('person', personSchema);
会自动创建一个复数小写版本的模型name.In这种情况下,它会自动创建一个collectionpersons
在mongoDB 如果它还不存在。
如果你想覆盖这个默认行为,你可以这样做:
var personSchema = new Schema({
名称:字符串,
年龄:数
},
{
collection:'people'
});
或
mongoose.model( 'person', personSchema, 'people' )
所以你称它为人,但 collection 名字将是人
如何在 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' });
非常抱歉,我选择的答案不准确。我无法删除它,因为它已被接受。准确回答你的问题是,mongoose.model('person', personSchema);
会自动创建一个复数小写版本的模型name.In这种情况下,它会自动创建一个collectionpersons
在mongoDB 如果它还不存在。
如果你想覆盖这个默认行为,你可以这样做:
var personSchema = new Schema({ 名称:字符串, 年龄:数 }, { collection:'people' });
或
mongoose.model( 'person', personSchema, 'people' )
所以你称它为人,但 collection 名字将是人