mongodb - 如何将集合的一部分从远程服务器复制到 MongoDB 中的本地数据库

标签 mongodb

我是 MongoDB 的新手,所以我可能只是遗漏了一些简单的东西。远程服务器有一个名为 DatabaseABC 的 MongoDB 数据库,它有一个名为 Logger 的集合。这个集合是巨大的。我想了解如何查询它而不必在查询之间等待几分钟的最佳方法是在本地复制集合中最后一天的文档。

根据我的阅读,我应该能够使用 cloneCollection并给它一个查询来过滤它。我无法让它工作。文档说,

You must connect directly to the mongod instance.

但是我不明白那是什么意思。如何使用 mongod 连接到本地数据库? mongod 似乎是启动数据库的一种方式,我可以这样做,但我不知道如何运行 { cloneCollection: "DatabaseABC.Logger", from: "mongoDevEtc.domain.net:27017", query: { TheTimestamp: "2015-05-13"} } 用它。

我需要婴儿学步。假设我有一个名为 test 的本地数据库。我打开了一个新的 Microsoft Windows 命令提示符,指向 mongod.exe 所在的 bin 目录。我输入什么命令才能将 2015 年 5 月 13 日写入的所有日志从 mongoDevEtc.domain.net:27017.DatabaseABC.Logger 移动到我位于 127.0.0.1:21000 的本地集合.test.Logger(注意,记录器集合在本地还不存在)?

最佳答案

首先 mongod 是 MongoDB 服务器。它理解一堆不同的 commands ,但您需要使用客户端 来发出这些命令。 MongoDB 的标准客户端是 the Mongo Shell called mongo .您可以直接从命令行调用它并开始发出一些命令。

现在,针对您的特定需求:cloneCollection command允许您从远程服务器上的数据库中的一个集合复制到您本地服务器上不同数据库上的另一个集合(即:您的客户端已连接)。从 Mongo Shell,您可以使用 db.runCommand 发出此命令(就像任何其他“原始”命令一样) .类似的东西:

> db.runCommand(
               { cloneCollection: "DatabaseABC.Logger",
                 from: "mongoDevEtc.domain.net:27017",
                 query: { TheTimestamp: "2015-05-13" }
               }
)

请注意,如果您的远程数据库与本地数据库同名,您可以使用 Mongo Shell 数据库方法 db.cloneCollection相反:

> db.cloneCollection("mongoDevEtc.domain.net:27017",
                     "Logger",
                     { TheTimestamp: "2015-05-13" })¶

正如您在下面看到的,db.cloneCollectioncloneCollection 数据库命令的简单包装器:

> db.cloneCollection
function (from, collection, query) {
    assert( isString(from) && from.length );
    assert( isString(collection) && collection.length );
    collection = this._name + "." + collection;
    query = query || {};
    return this._dbCommand( { cloneCollection:collection, from:from, query:query } );
}

关于mongodb - 如何将集合的一部分从远程服务器复制到 MongoDB 中的本地数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30223763/

相关文章:

javascript - Nodejs无法更新mongoDB数组中的索引

python - 为什么在两个键的查询中单个索引比复合索引更快? (MongoDB,多键)

mongodb - 快速写入 MongoDB 控制台,缓慢写入 ReplSet

javascript - MongoDB (Node.js) 将数据返回到数组

windows - 如何使用 .bat 文件调用 MongoDB 命令

java - Mongodb java驱动程序查询转换

node.js - 使用 GridFs 从 MongoDB 中提取文件 - id ### 的文件未打开以进行写入

javascript - 如何在不区分大小写的情况下查询mongodb中的字符串?

mongodb - 错误 : database names cannot contain the character ' '

javascript - MongoDB Cursor.each 抛出错误