0
我試圖導入this mongo tutorial中的示例數據集,但我正在嘗試使用C#代碼來完成此操作。以下是我有:從JSON字符串反序列化List <BsonDocument>
var reader = new StreamReader("C:\\primer-dataset.json");
string line;
var sb = new StringBuilder();
while ((line = reader.ReadLine()) != null)
{
sb.Append(line);
}
var documents = BsonSerializer.Deserialize<List<BsonDocument>>(sb.ToString());
var collection = _database.GetCollection<BsonDocument>("restaurants");
collection.InsertMany(documents);
我收到以下錯誤,當我嘗試反序列化JSON字符串:
不能反序列化從BsonType「文件」
「列表」我無法在網上找到任何東西來說明我做錯了什麼。
注:此頁面(https://docs.mongodb.com/ getting-started/csharp/import-data /)鏈接到示例數據集[here](https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/primer-dataset.json)。我對json不太瞭解,但由於存在多個根元素,因此它似乎無效。因爲它是一個'List>'我非常肯定在整個事情上都需要'[]',那麼每個記錄都需要一個逗號來分隔它。但是這個文件直接來自MongoDb的網站作爲示例文件,因此必須有另一種方式來讀取它。 –
Quantic
答案似乎解釋了[這裏](https://zaiste.net/2012/08/importing_json_into_mongodb/):「默認情況下,monogoimport假定文件從一個特殊的結構導入:類似於JSON格式,除了每行一個文件是允許的,每個文件之後都沒有逗號「。您看到的示例文件是*'*僅用於['mongoimport'](https://docs.mongodb.com/manual/reference/program/mongoimport/)。要做你的測試,你可以將第一個X記錄複製到一個新文件中,在它們周圍放置'[]'並用逗號分隔它們。那麼我認爲你的命令會正常工作。 – Quantic
感謝您的澄清(和你的幫助)。我通過修改json文件並解析爲JArray來實現它,他們循環遍歷並插入集合中。我會在幾分鐘後發佈答案。 –