2Meteor.Collections是否可能从两个不同的mongdb数据库服务器检索数据?

Dogs = Meteor.Collection('dogs')        // mongodb://192.168.1.123:27017/dogs
Cats = Meteor.Collection('cats')        // mongodb://192.168.1.124:27017/cats

推荐答案

使现代化

现在可以连接到远程/多个数据库:

var database = new MongoInternals.RemoteCollectionDriver("<mongo url>");
MyCollection = new Mongo.Collection("collection_name", { _driver: database });

其中<mongo_url>是mongodb url,例如mongodb://127.0.0.1:27017/meteor(带有数据库名称)

目前这种方法有一个缺点:没有Oplog

老生常谈

目前这是不可能的.每个meteor应用程序都绑定到一个数据库.

有几种方法可以解决这个问题,但它的价值可能更复杂:

一个选项是使用单独的Meteor应用程序

在其他meteor应用程序中(例如,在同一台机器上的端口6000上运行).您仍然可以进行响应,但需要通过方法调用代理插入、删除和更新

服务器:

Cats = Meteor.Collection('cats')

Meteor.publish("cats", function() {
    return Cats.find();
});

Meteor.methods('updateCat, function(id, changes) {
    Cats.update({_id: id}, {$set:changes});
});

你当前的Meteor应用程序:

var connection = DDP.connect("http://localhost:6000");

connection.subscribe("cats");
Cats = Meteor.Collection('cats', {connection: connection});

//To update a collection
Cats.call("updateCat", <cat_id>, <changes);

另一个选项-自定义mongodb连接

这使用了node js mongodb本机驱动程序.

这是连接到数据库,就像在任何其他Node.js 应用程序中一样.

no个可用类型,不能使用new Meteor.Collection个类型集合.

var mongodb = Npm.require("mongodb"); //or var mongodb = Meteor.require("mongodb") //if you use npm package on atmosphere

var db = mongodb.Db;
var mongoclient = mongodb.MongoClient;
var Server = mongodb.Server;

var db_connection = new Db('cats', new Server("127.0.0.1", 27017, {auto_reconnect: false, poolSize: 4}), {w:0, native_parser: false});

db.open(function(err, db) {
    //Connected to db 'cats'

    db.authenticate('<db username>', '<db password>', function(err, result) {
      //Can do queries here
      db.close();
   });
});

Mongodb相关问答推荐

MongoDB Aggregate 根据时间进行多重分组

MongoDB - 家庭作业(job)帮助.不确定如何在 mongodb 中访问文档中的变量

DB 中的引用对象在 GraphQL 查询中返回 null

如何将交易列表变成 token 数量的对象?

在 DBeaver 中连接到 Redis 或 MongoDB

使用绝对类型在 Typescript 中编写 Mongoose 的类型化模型和模式的类和接口

MongoDB插入引发重复键错误

如何在 mongo JavaScript shell 中中止查询

MongoDB 存储 ObjectId 的数组

MongoDB:多个 $elemMatch

使用 Mongoid 和 Ruby 查询最近 30 天的日期范围?

如何使用 MongoDB 以编程方式预拆分基于 GUID 的分片键

NumberLong和简单整数之间的MongoDB区别?

使用 Java 驱动程序更新 MongoDB 中的数组

Mongodb错误:The positional operator did not find the match needed from the query

多次使用位置 `$` 运算符来更新嵌套数组

通过浏览器连接mongodb?

mongo中的稀疏索引和空值

Mongoid 不在查询中

MongoDb:聚合 $lookup 过滤外部文档