我是MongoDB的新手,所以我可能只是错过了一些简单的东西。远程服务器有一个名为DatabaseABC
的MongoDB数据库,它有一个名为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
的本地集合,我输入了哪些命令(注意,记录器集合在本地不存在)?
答案 0 :(得分:5)
首先,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.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 } );
}
答案 1 :(得分:0)
要将数据库从计算机复制到计算机,请执行以下步骤:
运行此代码进行复制:
mongodump --db Your_database_name /h IP_of_remote_machine
例如:
mongodump --db myDb /h 192.168.0.100
运行将数据库从dump / myNpsCorporate恢复到mongodb:
mongorestore --Your_database_name dump/Your_database_name
例如:
mongorestore --myDb dump/myDb
完成