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

Ono*_*osa 3 mongodb

我是MongoDB的新手,所以我可能只是错过了一些简单的东西.远程服务器有一个名为MongoDB的数据库DatabaseABC,该数据库有一个名为的集合Logger.这个系列非常棒.我认为理解如何查询它而不必等待几分钟查询的最佳方法是在本地复制集合中最后一天的文档.

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

您必须直接连接到mongod实例.

但我不明白这意味着什么.如何使用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(注意,记录器集合在本地不存在)?

Syl*_*oux 5

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

现在,根据您的特定需求:该cloneCollection命令允许您从远程服务器上的数据库中的一个集合复制到本地服务器上的另一个数据库(即:客户端所连接的数据库)上的其他集合.从Mongo Shell中,您可以使用发出此命令(与任何其他"原始"命令一样)db.runCommand.像这样的东西:

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

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

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

正如您在下面看到的,db.cloneCollection是一个围绕cloneCollection数据库命令的简单包装器:

> 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 } );
}
Run Code Online (Sandbox Code Playgroud)