2016-11-28 33 views
0

我是MongoDB的新手,在尝试从一些教程中读取SQL Server数据库中的数据并使用C#和Entity Framework在MongoDB中将其反转。BSON错误为MongoDB创建新的BsonDocument

我发现MongoDB的现场验证码:

async static void addDoc() 
{ 
    var document = new BsonDocument 
    { 
     { "address" , new BsonDocument 
      { 
       { "street", "2 Avenue" }, 
       { "zipcode", "10075" }, 
       { "building", "1480" }, 
       { "coord", new BsonArray { 73.9557413, 40.7720266 } } 
      } 
     }, 
     { "borough", "Manhattan" }, 
     { "cuisine", "Italian" }, 
     { "grades", new BsonArray 
      { 
       new BsonDocument 
       { 
        { "date", new DateTime(2014, 10, 1, 0, 0, 0, DateTimeKind.Utc) }, 
        { "grade", "A" }, 
        { "score", 11 } 
       }, 
       new BsonDocument 
       { 
        { "date", new DateTime(2014, 1, 6, 0, 0, 0, DateTimeKind.Utc) }, 
        { "grade", "B" }, 
        { "score", 17 } 
       } 
      } 
     }, 
     { "name", "Vella" }, 
     { "restaurant_id", "41704620" } 
    }; 

    var collection = _database.GetCollection<BsonDocument>("restaurants"); 
    await collection.InsertOneAsync(document); 
} 

它可以作为我的期望。所以,我在此:

using (var db = new Entities()) 
{ 
    foreach (var trans in db.TRANSACTIONS) 
    { 
     try 
     { 
      var document = new BsonDocument 
      { 
       { "ID", erog.ID.ToBson() }, 
       { "CUSTOMER" , new BsonDocument 
        { 
         { "CSTID", trans.CUSTOMERS.CSTID.ToBson() }, 
         { "NAME", trans.CUSTOMERS.NAME.ToBson()}, 
         { "CITY", trans.CUSTOMERS.CITY.ToBson() }, 
         { "ZIP", trans.CUSTOMERS.ZIP.ToBson() }, 
         { "STATE", trans.CUSTOMERS.STATE.ToBson() }, 
        } 
       }, 
       { "TRANSACTIONNUMBER", trans.TRANSACTIONNUMBER.ToBson() }, 
       { "TIMESTAMP", erog.TIMESTAMP.ToBson() }, 
       { "AMOUNT", erog.AMOUNT.ToBson() }, 
       { "PAYMENT", erog.PAYMENT.ToBson() }, 
      }; 

      var collection = _database.GetCollection<BsonDocument>("transactions"); 
      collection.InsertOne(document); 
     } 
     catch (Exception e) 
     { 
      Console.WriteLine(e); 
     } 
    } 
} 

当我尝试执行此代码,我执行VAR文件时遇到错误=新BsonDocument {....};错误是“字符串值不能写入bson文档的根级别”。所以,如您所见,我试图将.ToBson()置于我的值的末尾,但结果仍然相同。

唯一的区别是值不是两个引号之间的字符串,但它是来自我的表的实际值。

如何才能达到我的目标并创建&从我的代码开始在我的MongoDB数据库中插入文档?

回答

0

好吧,愚蠢的问题,愚蠢的解决方案。

只需更换所有toBson()的toString()和现在的作品! :)