我們有幾個驅動程序可以幫助您完成此過程。我假定了一些軟件開發的知識,並將展示我們的MongoDB的ADO.NET Provider,它使用了熟悉的MongoDBConnection
,MongoDBCommand
和MongoDBDataReader
對象。
首先,你要創建的連接字符串與您連接雲MongoDB實例:
string connString = "Auth Database=test;Database=test;Password=test;Port=27117;Server=http://clouddbaddress;User=test;Flatten Objects=false";
你會注意到,我們有拼合對象屬性設置爲false,這確保了任何JSON /文檔中包含的BSON對象將作爲原始JSON/BSON返回。
創建連接字符串後,您可以建立連接並從數據庫中讀取數據。您需要以某種方式存儲返回的數據,以便您可以輕鬆訪問以供將來使用。
List<string> columns = new List<string>();
List<object> values;
List<List<object>> rows = new List<List<object>>();
using (MongoDBConnection conn = new MongoDBConnection(connString))
{
//create a WHERE clause that will limit the results to newly added documents
MongoDBCommand cmd = new MongoDBCommand("SELECT * FROM SomeTable WHERE ...", conn);
rdr = cmd.ExecuteReader();
results = 0;
while (rdr.Read())
{
values = new List<object>();
for (int i = 0; i < rdr.FieldCount; i++)
{
if (results == 0)
columns.Add(rdr.GetName(i));
values.Add(rdr.GetValue(i));
}
rows.Add(values);
results++;
}
}
您收集了所有的每個要複製的對象的數據後,可以配置到本地MongoDB實例的新連接,並建立查詢,插入新的文件。
connString = "Auth Database=testSync;Database=testSync;Password=testSync;Port=27117;Server=localhost;User=testSync;Flatten Objects=false";
using (MongoDBConnection conn = new MongoDBConnection(connString)) {
foreach (var row in rows) {
//code here to create comma-separated strings for the columns
// and values to be inserted in a SQL statement
String sqlInsert = "INSERT INTO backup_table (" + column_names + ") VALUES (" + column_values + ")";
MongoDBCommand cmd = new MongoDBCommand(sqlInsert, conn);
cmd.ExecuteQuery();
}
此時,您將插入所有新文檔。然後,您可以根據更新的日期/時間更改過濾器(開頭的WHERE子句),並使用UPDATE命令更新其在本地MongoDB實例中的相應條目。
事情看出來:
- 確保你正確地篩選出新的/更新的條目。
- 確保您正確解釋變量的類型,以便在SQL查詢中輸入值時正確包圍引號(或不包含引號)。
我們有幾個可能對您有用的驅動程序。我上面演示了ADO.NET Provider,但我們也有driver for writing apps in Xamarin和JDBC driver (for Java)。
我們的[MongoDB驅動程序](http://www.cdata.com/drivers/mongodb/)中的任何一個都可以讓您構建自己的應用程序,以將新的/更新的文檔從基於雲的數據庫推送到本地數據庫。我會得到一個正確的答案,並很快發佈。 –