mongoosedynamic的mongodb集合名称

我在node.js上使用mongob驱动程序mongodb。 我有一个架构如下。

使用db.model我可以得到硬编码集合名称为“aggregation”的模型。 它工作正常。

但是,如何使用具有dynamic按需集合名称的模式/模型? 基本上,我需要定义一个新的按需集合,它将使用相同的模式。

aggregationmodel.js

var mongoose = require('mongoose'); var db = mongoose.createConnection(configfile.mongodb.uriAggregation); var aggregationSchema = mongoose.Schema({ factorname : { type: String, index: true }, active : { type: Boolean}, total : [{ _id : { type: Number, index: true }, ordervolume : Number, ordertips : Number, ordernationality : String, ordercancelled : Number } ] }); module.exports = db.model('aggregation', aggregationSchema, 'aggregation'); 

controller.js(此文件引用模型)

 var Aggregates = require('../models/aggregationmodel.js'); 

所有你基本上需要做的实例化一个“新”模型,其中必需的集合作为参数。 如果模式可用,这只是一个范围问题。 但是您可以始终从现有模型中获取模式并在新实例中使用:

 var async = require('async'), mongoose = require('mongoose'), Schema = mongoose.Schema; mongoose.connect('mongodb://localhost/modtest'); var testSchema = new Schema({},{ strict: false }); var Test = mongoose.model( "Test", testSchema, "test" ); mongoose.connection.on("open", function(err,conn) { var ReModel = mongoose.model( "Redo", Test.schema, "redo" ); var redo = new ReModel({ "a": 1 }); redo.save(function(err,doc) { if (err) throw err; console.log( doc ); console.log( "done" ); }); }); 

结果是,实际的文档被插入到与实例化的模型绑定的集合中,该集合是基于从另一个模型实例提取的模式。

在你的实现中你真正需要做的是同样的事情,并提供所需的集合作为一个参数供给标准实例创build方法。