【问题标题】:Mongoose - Same schema for different collections in (MongoDB)Mongoose - (MongoDB) 中不同集合的相同模式
【发布时间】:2012-10-31 11:44:58
【问题描述】:

我正在创建一个应用程序(Express+MongoDB+Mongoose),其中文档自然地按组聚集。对数据库的每个查询只需要访问单个组中的文档。所以我认为为了性能起见,将每个组分成自己的集合是个好主意。

现在,我将为这些集合中的每一个使用相同的架构,因为它们将存储相同类型的文档。我曾经只有一个 Model 对象,因为我曾经将所有东西都放在一个集合中,但现在我需要多个 Model,每组一个。

在每个请求上创建一个新的模型对象是个好主意(使用共享架构)还是太昂贵了?在这种情况下,什么是好的架构决策?

我能想到的最好方法是在第一次有集合请求时创建一个模型,然后将模型缓存在字典中以便快速访问。

我想最好的方法取决于为每个请求创建一个新模型对象的成本。

谢谢!

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    模型已被 Mongoose 缓存,您可以为多个模型/集合使用相同的架构对象。因此,只需使用如下代码(在启动时)创建您的模型集:

    var mongoose = require('mongoose');
    var Schema = mongoose.Schema;
    var schema = new Schema({...});
    var model1 = mongoose.model('model1', schema);
    var model2 = mongoose.model('model2', schema);
    

    如果您不想传递 model1model2 模型实例,您可以根据需要在处理程序中调用 mongoose.model('model1'); 来查找它们。

    【讨论】:

    • 当我将这两个集合存储在不同的数据库上时,我遇到了麻烦。在这种情况下,我建议创建两个不同的模式,但您可以重用相同的模式规范对象(上面的 {...})。 (我得到的错误很奇怪:“验证失败:需要路径 __v”。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-27
    • 2020-07-11
    • 1970-01-01
    • 2023-03-31
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多