1

我想将我的表从 SQL Server 迁移到 MongoDB。我使用下面的代码,它工作正常:

string strQueryInline = "select * from "+ddl_table.SelectedValue +"";
SqlDataAdapter adpt = new SqlDataAdapter(strQueryInline, con);
DataTable dt = new DataTable();
adpt.Fill(dt);

var collection = db.GetCollection<BsonDocument>(txt_value.Text);

try
{
    foreach (DataRow dr in dt.Rows)
    {
        BsonDocument bson = new BsonDocument();

        for (int i = 0; i < dr.ItemArray.Count(); i++)
        {
            bson.Add(dr.Table.Columns[i].ColumnName, dr[i].ToString());
        }
        collection.Insert(bson);
    }
}

但问题是它采用与 SQL Server 中相同的名称和列名。但是我想为表使用不同的名称,并为 mongo 集合中的字段使用一些不同的名称。我搜索了一些链接,但无法找到确切的解决方案...

请建议一些东西..

4

1 回答 1

1

我不确定你在问什么。您的意思是您希望 mongo 文档中的属性名称与 sql 表中的列名不同吗?

如果这是您想要的,那么我不知道如何自动完成。只需添加一个字典,将 sql 列名称与 mongo 属性名称映射:

// ...
Dictionary<string, string> _mapping = new Dictionay<string, string>();
_mappaing.Add("columnA", "propertyA");
// and so on

// ...

try
{
    foreach (DataRow dr in dt.Rows)
    {
        BsonDocument bson = new BsonDocument();

        for (int i = 0; i < dr.ItemArray.Count(); i++)
        {
            // here use the mapped name instead of the colmn name
            bson.Add(_mapping[dr.Table.Columns[i].ColumnName], dr[i].ToString());
        }
        collection.Insert(bson);
    }
}
于 2013-06-05T11:01:45.767 回答