如何使用mongojs将集合记录从一个数据库插入到另一个数据库

how to insert collection records from one database to another database using mongojs

我正在尝试获取存在于 'fromdb' 中的一个集合的记录,并将该记录插入到 'todb' 的另一个集合中。两个数据库都具有相同的模式结构相同的集合,我只想合并特定集合的两个记录。

我写的脚本是:

var config = require('./mydb');
var collections = ['addresses'];
var todb = require('mongojs').connect(config.todb, collections);
var fromdb = require('mongojs').connect(config.fromdb, collections);

exports.up = function(next) {
  fromdb.addresses.find().forEach(function(err, d) {
    if(!err && d){
      todb.addresses.insert(d);      
    }
    if(!d)
      next();
  });
};

exports.down = function(next) {
  next();
};

但问题是执行后没有报错,无法在todb中插入记录。你能告诉我我做错了什么吗?

您正在使用 mongo 游标的 .forEach 方法,takes a single argument。因此,在您的代码中,数据被传递给 err 变量,而 d 变量未定义。

如果你想保留错误处理,你最好使用常规回调,mongojs 会在数据上为你调用 toArray,但你仍然有一个 forEach 方法:

// Instead of fromdb.addresses.find().forEach(function(err, d) {
fromdb.addresses.find(function(err, results) {
  results.forEach(function(d) {