我正在创建一个应用程序(Express+MongoDB+Mongoose),其中文档按组自然聚集.对数据库的每个查询只需要访问单个组中的文档.所以我认为,为了提高性能,最好将每个小组分成各自的集合.

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

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

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

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

谢谢

推荐答案

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');来查找它们.

Mongodb相关问答推荐

如何将空值单独分组?

从 Amazon S3(Next.js、Mongodb、Mongoose)删除图像

MongoDB 聚合 $match 阶段与条件查询

在 Mongo 聚合中,可以通过分组生成 3 个不同的计数

System.FormatException occurred in MongoDB.Bson.dll - XXX is not a valid 24 digit hex string

mongo.lock 文件有什么用?

MongoDB中的readPreference和readConcern有什么区别?

如何使用 Spring Data MongoDB 通过 GridFS ObjectId 获取二进制流

Select 匹配mongodb中两个字段的concat值的记录

mongod 和 mongo 命令在 Windows 10 上不起作用

使用 Node.js 和 mongodb 处理超时

ExpressJS & Mongoose REST API struct :最佳实践?

Mongoose 中不同集合的相同模式

如何使用node.js http服务器从mongodb返回大量行?

Mongodb KeyFile 太开放权限

MongoDB 中的多个 $inc 更新

处理Mongodb连接的正确方法是什么?

Mongodb 按字段名称查找任何值

带有 either or查询的mongoose findOne

带有条件的MongoDB聚合查找