是否可以生成动态命名的MongoDB集合?
通常,MongoDB集合的定义如下:
DuckbilledPlatypi = new Mongo.Collection("duckbilledplatypi");
但是,我希望根据用户输入动态生成集合。 例如,我可能希望它是:
RupertPupkin20151212_20151218 = new Mongo.Collection("rupertPupkin20151212_20151218");
建立Collection名称很容易:
var dynCollName = username + begindate +'_'+ enddate;
…然后将“dynCollName”传递给Mongo.Collection:
= new Mongo.Collection(dynCollName);
…但是如何收集实例名称 – 如何动态生成? 我需要这样的东西:
"RupertPupkin20151212_20151218".ToRawName() = new Mongo.Collection(dynCollName);
-要么:
"RupertPupkin20151212_20151218".Unstringify() = new Mongo.Collection(dynCollName);
……但是AFAIK,没有这样的事情……
在单个客户端实例上,是的,您可以动态引用它 。 但是在一般情况下(使用它在服务器和所有连接的客户端之间同步数据),没有。
我在动态创建的集合部分中解决了常见错误中的这一点,但基本问题是让所有连接的客户端就动态生成的集合集达成一致意见非常复杂。
更有可能的是,有些集合具有灵活的架构,实际上是你想要的。 正如Andrew Mao在这个相关问题的答案中指出的那样, 分区器是另一种可用于帮助解决引起这个问题的案例的工具。