18

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

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

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

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

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

谢谢!

4

1 回答 1

29

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);

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

于 2012-11-12T01:31:42.107 回答