2

我可以使用创建新的流星集合Test = new Meteor.Collection("testCollection")

但它会在我的 mongo 安装的testCollection内部数据库中创建。admin

假设我在 mongo like 中有两个独立的数据库testing,另一个是admin. 如何testing在 mongo 安装中的 db 中创建上述集合?

此外,我可以在某处指定我想要限制/取消限制特定集合以定义集合的大小。

4

1 回答 1

3

如果你只是想使用testing数据库,你可以MONGO_URL在调用你的应用程序之前覆盖环境变量,例如(使用正确的 url 到你的数据库):

$ export MONGO_URL=mongodb://localhost:27017/testing
$ meteor

如果你想在你的应用程序中使用不同的数据库,你应该使用新的 _driver 参数。只需使用与默认数据库相同的 mongo url,但替换数据库名称!

  // this replace is just for explicit demonstration. Static string is advised
  var mongo_url = process.env.MONGO_URL.replace("/admin","/testing");
  var testing = new MongoInternals.RemoteCollectionDriver(mongo_url);
  Test = new Mongo.Collection("testCollection", { _driver: testing });

至于上限集合,它在这个流星问题中得到了正确的回答,并由这个提交修复:

col1 = new Meteor.Collection("myCollection");
coll._createCappedCollection(numBytes, maxDocuments);

据我所知,您无法取消以前封顶的收藏。

请注意,要使这些方法起作用,您必须在服务器和客户端之间分离集合创建,因为客户端无法访问您服务器的数据库。在客户端,只需像往常一样创建您的集合,名称与服务器版本相同:

if (Meteor.isServer) {
  var testing = new MongoInternals.RemoteCollectionDriver("<mongo url testing>");
  Test = new Mongo.Collection("testCollection", { _driver: testing });
  Test._createCappedCollection(2000000, 500); // capped to 2,000,000 Bytes, 500 documents
}
else {
  Test = new Meteor.Collection("testCollection");
}
于 2015-06-04T09:28:19.890 回答