【问题标题】:How to create Meteor collection in different database?如何在不同的数据库中创建 Meteor 集合?
【发布时间】:2015-08-18 19:21:24
【问题描述】:

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

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

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

此外,我是否可以在某处指定我想为特定集合设置上限/取消上限以定义集合的大小。

【问题讨论】:

    标签: mongodb meteor minimongo


    【解决方案1】:

    如果您只想使用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 });
    

    关于封顶收藏,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");
    }
    

    【讨论】:

    • 问题是我想让 mongo 中的 admin db 保持不变。并希望流星只使用我定义的数据库。那么,在这种情况下,我还需要使用“_driver”吗?
    • 您想在您的应用程序中使用admin 集合吗?如果不这样做,你只需要覆盖MONGO_URL环境变量,使用“testing”而不是“admin”,然后就可以正常创建集合,并将它们放入“testing”数据库中。
    • 你能告诉我如何在流星中设置MONGO_URL。我想,这将是一次性的过程。你还有什么建议吗,因为现在我已经在系统中安装了meteor accounts 包,它在admin db 中有自己的集合?或者,一旦 MONGO_URL 更改,一切都会自动完成。
    • this question 中创建一个settings.json 并使用meteor --settings settings.json 启动服务器
    猜你喜欢
    • 2013-03-22
    • 2013-12-11
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 2020-07-05
    • 1970-01-01
    • 1970-01-01
    • 2016-07-19
    相关资源
    最近更新 更多