Importing JSON

The .NET BSON library supports reading JSON documents with the JsonReader class.

The program below will import all documents from a file with one document per line into the collection.

Given the input file’s contents:

{ "_id" : ObjectId("5513306a2dfd32ffd580e323"), "x" : 1.0 }
{ "_id" : ObjectId("5513306c2dfd32ffd580e324"), "x" : 2.0 }
{ "_id" : ObjectId("5513306e2dfd32ffd580e325"), "x" : 3.0 }
{ "_id" : ObjectId("551330712dfd32ffd580e326"), "x" : 4.0 }

And the program:

using MongoDB.Bson;
using MongoDB.Bson.IO;
using MongoDB.Bson.Serialization;
using MongoDB.Driver;

// ...

string inputFileName; // initialize to the input file
IMongoCollection<BsonDocument> collection; // initialize to the collection to write to.

using (var streamReader = new StreamReader(inputFileName))
{
    string line;
    while ((line = await streamReader.ReadLineAsync()) != null)
    {
        using (var jsonReader = new JsonReader(line))
        {
            var context = BsonDeserializationContext.CreateRoot(jsonReader);
            var document = collection.DocumentSerializer.Deserialize(context);
            await collection.InsertOneAsync(document);
        }
    }
}

The collection’s contents should look like this:

> db.mydata.find()
{ "_id" : ObjectId("5513306a2dfd32ffd580e323"), "x" : 1.0 }
{ "_id" : ObjectId("5513306c2dfd32ffd580e324"), "x" : 2.0 }
{ "_id" : ObjectId("5513306e2dfd32ffd580e325"), "x" : 3.0 }
{ "_id" : ObjectId("551330712dfd32ffd580e326"), "x" : 4.0 }
On this page