一尘不染

用猫鼬动态创建收藏

node.js

我想让用户能够在我的Node应用程序中创建集合。我真的只见过猫鼬集合中的硬编码示例。有人知道是否有可能用猫鼬动态创建集合吗?如果是这样,那么一个例子将非常有帮助。

基本上,我希望能够在不同的集合中存储不同“事件”的数据。

IE事件:event1,event2,… eventN

用户可以在那里创建自己的自定义事件并将数据存储在该集合中。最后,每个事件可能有成百上千的行。我想让用户能够对他们的事件执行CRUD操作。我不想将每个事件数据存储在一个不同的集合中,而不是将其存储在一个大的集合中。

我真的没有一个尝试过的例子,因为我只用猫鼬创建了“硬编码”集合。我什至不确定是否可以根据用户请求动态创建猫鼬新集合。

var mongoose = require('mongoose');
mongoose.connect('localhost', 'events');

var schema = mongoose.Schema({ name: 'string' });
var Event1 = mongoose.model('Event1', schema);

var event1= new Event1({ name: 'something' });
event1.save(function (err) {
  if (err) // ...
  console.log('meow');
});

如果我将“ Event1”硬编码为集合,则上述方法效果很好。不确定我是否创建动态集合。

var mongoose = require('mongoose');
mongoose.connect('localhost', 'events');

...

var userDefinedEvent = //get this from a client side request
...

var schema = mongoose.Schema({ name: 'string' });
var userDefinedEvent = mongoose.model(userDefinedEvent, schema);

你能做到吗?


阅读 209

收藏
2020-07-07

共1个答案

一尘不染

来自mongo docs:数据建模

在某些情况下,您可能选择将信息存储在多个集合中,而不是在一个集合中。

考虑一个样本收集日志,该日志存储了各种环境和应用程序的日志文档。日志收集包含以下格式的文档:

{log:“ dev”,ts:…,信息:…} {log:“ debug”,ts:…,信息:…}

如果文档总数很少,则可以按类型将文档分组。对于日志,请考虑维护不同的日志集合,例如logs.dev和logs.debug。logs.dev集合将仅包含与开发环境有关的文档。

通常,具有大量集合不会造成明显的性能损失,并且会导致非常好的性能。独特的馆藏对于高通量批处理非常重要。

2020-07-07