gpt4 book ai didi

mongodb - 如何在不同的数据库中创建 meteor 集合?

转载 作者:可可西里 更新时间:2023-11-01 10:03:38 29 4
gpt4 key购买 nike

我可以使用 Test = new Meteor.Collection("testCollection")

创建新的 meteor 集合

但它在我的 mongo 安装的 admin 数据库中创建了 testCollection

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

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

最佳答案

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

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

如果你想在你的应用中使用不同的数据库,你应该使用 the new _driver parameter .只需使用与默认数据库相同的 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 });

至于capped collections,在this meteor issue中得到了正确的回答。并由 this commit 修复:

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");
}

关于mongodb - 如何在不同的数据库中创建 meteor 集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30639466/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com