我想让用户能够在我的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);
你能做到吗?
来自mongo docs:数据建模
在某些情况下,您可能选择将信息存储在多个集合中,而不是在一个集合中。 考虑一个样本收集日志,该日志存储了各种环境和应用程序的日志文档。日志收集包含以下格式的文档: {log:“ dev”,ts:…,信息:…} {log:“ debug”,ts:…,信息:…} 如果文档总数很少,则可以按类型将文档分组。对于日志,请考虑维护不同的日志集合,例如logs.dev和logs.debug。logs.dev集合将仅包含与开发环境有关的文档。 通常,具有大量集合不会造成明显的性能损失,并且会导致非常好的性能。独特的馆藏对于高通量批处理非常重要。
在某些情况下,您可能选择将信息存储在多个集合中,而不是在一个集合中。
考虑一个样本收集日志,该日志存储了各种环境和应用程序的日志文档。日志收集包含以下格式的文档:
{log:“ dev”,ts:…,信息:…} {log:“ debug”,ts:…,信息:…}
如果文档总数很少,则可以按类型将文档分组。对于日志,请考虑维护不同的日志集合,例如logs.dev和logs.debug。logs.dev集合将仅包含与开发环境有关的文档。
通常,具有大量集合不会造成明显的性能损失,并且会导致非常好的性能。独特的馆藏对于高通量批处理非常重要。