通常,MongoDB集合的定义如下:
DuckbilledPlatypi = new Mongo.Collection("duckbilledplatypi");
但是,我希望根据用户输入动态生成集合。例如,我可能想要它:
RupertPupkin20151212_20151218 = new Mongo.Collection("rupertPupkin20151212_20151218");
建立集合名称很容易:
var dynCollName = username + begindate +'_'+ enddate;
...然后将“dynCollName”传递给Mongo.Collection:
= new Mongo.Collection(dynCollName);
...但是如何收集实例名称 - 如何动态生成?我需要类似的东西:
"RupertPupkin20151212_20151218".ToRawName() = new Mongo.Collection(dynCollName);
-OR:
"RupertPupkin20151212_20151218".Unstringify() = new Mongo.Collection(dynCollName);
......但AFAIK,没有这样的事情......
答案 0 :(得分:2)
在单个客户端实例上,是的,您可以dynamically reference it。但是在一般情况下(使用它在服务器和所有连接的客户端之间同步数据),没有。
我在common mistakes的动态创建的集合部分中详细说明了这一点,但基本问题是高度复杂到让所有连接的客户端就动态生成的集合集达成一致。
更有可能的是,有些集合具有灵活的架构,实际上是你想要的。正如Andrew Mao在this related question的答案中指出的那样,partitioner是另一种工具,可以帮助解决导致这个问题的一些案例。