gpt4 book ai didi

javascript - Mongoose动态mongodb集合名称

转载 作者:行者123 更新时间:2023-11-30 17:21:41 25 4
gpt4 key购买 nike

我在 node.js 上为 mongodb 使用 mongoose 驱动程序。我有如下架构。

使用 db.model 我可以获得具有硬编码集合名称“聚合”的模型。它工作正常。

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

聚合模型.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');

最佳答案

您基本上需要做的就是实例化一个"new"模型,该模型将所需的集合作为参数。关于架构是否可用,这只是一个真正的范围界定问题。但是您始终可以从现有模型中获取架构并在新实例中使用:

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


});

结果是实际文档被插入到与您根据从其他模型实例提取的模式实例化的模型相关联的集合中。

在您的实现中您真正需要做的只是同一件事,并提供所需的集合作为参数以输入标准实例创建方法。

关于javascript - Mongoose动态mongodb集合名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25050930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com