2015-05-13 71 views
3

我是MongoDB的新手,所以我可能只是缺少一些簡單的東西。遠程服務器有一個叫做DatabaseABC的MongoDB數據庫,它有一個名爲Logger的集合。這個收藏是巨大的。我認爲理解如何在查詢之間查詢而不必在查詢之間等待幾分鐘的最佳方式是在本地複製集合中最後一天的文檔。如何將集合的一部分從遠程服務器複製到MongoDB中的本地數據庫

從我讀過的,我應該能夠使用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移動到我的本地收藏(請注意,記錄器集合在本地還不存在),我輸入了哪些命令?

回答

4

首先mongod是MongoDB服務器。它瞭解一堆不同的commands,但您需要使用客戶端來發出這些命令。 MongoDB的標準客戶端是the Mongo Shell called mongo。你可以直接從命令行調用它並開始發佈一些命令。現在

,爲您的特定需求:在cloneCollection command允許你從一個集合中的一個DB一個遙遠服務器上覆制到其他集合,在不同的DB你本地服務器(即:一個你的客戶端連接的)。在Mongo Shell中,您可以使用db.runCommand發出此命令(與其他任何「原始」命令一樣)。類似的東西:

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

請注意,是你遙遠的數據庫具有相同的名稱作爲您的本地數據庫,你可能會使用蒙戈殼牌數據庫的方法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 }); 
} 
+0

謝謝。我會盡快嘗試,並可能將其標記爲答案。不過,我有點困惑。如果我使用「mongo」不使用shell?我關心的是文檔中的這一行,「db.cloneCollection()不允許你通過mongos克隆一個集合,你必須直接連接到mongod實例。」 – Onosa

0

從機器複製數據庫到你的機器,休耕此步驟:

  1. 打開CMD
  2. 運行這段代碼複製:

    mongodump --db Your_database_name /h IP_of_remote_machine 
    

    例如:

    mongodump --db myDb /h 192.168.0.100 
    
  3. 運行從dump/myNpsCorporate恢復數據庫到mongodb:

    mongorestore --Your_database_name dump/Your_database_name 
    

    例如:

    mongorestore --myDb dump/myDb 
    
  4. 完成

+0

這不是我正在尋找的東西,但它是備份和恢復數據庫的有趣方式。 – Onosa

相關問題