簡體   English   中英

貓鼬動態mongodb集合名稱

[英]Mongoose dynamic mongodb collection name

我在node.js上為mongodb使用mongoose驅動程序。 我有一個如下的架構。

使用db.model可以獲得帶有硬編碼集合名稱“ aggregation”的模型。 工作正常。

但是,如何將模式/模型與動態按需集合名稱一起使用? 基本上,我將需要按需定義一個新集合,它將使用相同的架構。

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


});

結果是,根據從其他模型實例提取的架構,將實際文檔插入到與您實例化的模型綁定的集合中。

在實現過程中,您真正需要做的全部就是同一件事,並提供所需的集合作為參數,以饋入標准實例創建方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM