2016-11-28 1 views
0

Я новичок в MongoDB, и после некоторых уроков я пытаюсь прочитать данные из базы данных SQL Server и отменить их в MongoDB с помощью C# и Entity Framework.Ошибка BSON, создающая новый BsonDocument для MongoDB

Я нашел этот код на сайте 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); 
     } 
    } 
} 

Когда я пытаюсь выполнить этот код, я получаю сообщение об ошибке при выполнении уага документа = новый BsonDocument {....}; ошибка «Строковое значение не может быть записано на корневой уровень документа bson». Итак, как вы можете видеть, я попытался поместить .ToBson() в конце моих значений, но результат все тот же.

Единственное отличие заключается в том, что значение не является строкой между двумя кавычками, но это реальное значение из моей таблицы.

Как достичь цели и создать & Вставить документ в мою базу данных MongoDB, начиная с моего кода выше?

ответ

0

Хорошо, немой вопрос, немой решение.

Просто замените все toBson() с ToString() и теперь он работает! :)