如何在express js应用程序中使用mongoose ORM指向mongodb中的特定集合。
不适用
discount.expiry.setDate(Date.now() + 1);
考虑我的mongo数据库有多个集合,因此我的上述代码将如何指向特定的集合。
答案 0 :(得分:1)
通常,我们遵循在mongoDB中命名集合复数的约定。例如,在MongoDB中,我们创建users
表,但在Node.js中使用单数。因此,出口将是:
module.exports = mongoose.model('users',UserSchema)
在其他脚本中,我们要求如下:
const User=require('<pathToModel>/user')
这意味着我们将模型称为User
,它基于UserSchema
,与此相关的集合是users
在您的代码中,您可以这样做:
module.exports = mongoose.model('person', personSchema);
答案 1 :(得分:0)
如果您要使用特定模型的文档,请使用mongoose.model('person', personSchema, collection)
。
或者,您可以在Schema定义中命名所需的关联集合:
var dataSchema = new Schema({..}, { collection: 'data' });
答案 2 :(得分:0)
非常抱歉,我选择的答案不正确。我无法删除它,因为它已被接受。您问题的准确答案是,mongoose.model('person', personSchema);
将自动创建模型名称的复数小写版本。在这种情况下,它将在mongoDB中自动创建集合persons
(如果尚不存在) 。
如果要覆盖此默认行为,则可以这样操作:
var personSchema = new Schema({ 名称:字符串, 年龄:数字 }, { 收藏:“人民” });
或
mongoose.model( 'person', personSchema, 'people' )
,因此您将其称为人员,但是集合名称将为人员