Exporting JSON

The .NET BSON library supports writing JSON documents with the JsonWriter class.

The programs below will export all documents from a collection to a file with one document per line. There are two versions of the program, one using the synchronous API and the other using the asynchronous API.

Given the collection’s contents:

> 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 } 

And the synchronous version of the program:

using MongoDB.Bson; using MongoDB.Bson.IO; using MongoDB.Bson.Serialization; using MongoDB.Driver; // ... string outputFileName; // initialize to the output file IMongoCollection<BsonDocument> collection; // initialize to the collection to read from using (var streamWriter = new StreamWriter(outputFileName)) { var cursor = collection.Find(new BsonDocument()).ToCursor(); foreach (var document in cursor.ToEnumerable()) { using (var stringWriter = new StringWriter()) using (var jsonWriter = new JsonWriter(stringWriter)) { var context = BsonSerializationContext.CreateRoot(jsonWriter); collection.DocumentSerializer.Serialize(context, document); var line = stringWriter.ToString(); streamWriter.WriteLine(line); } } } 

Or the asynchronous version of the program:

using MongoDB.Bson; using MongoDB.Bson.IO; using MongoDB.Bson.Serialization; using MongoDB.Driver; // ... string outputFileName; // initialize to the output file IMongoCollection<BsonDocument> collection; // initialize to the collection to read from using (var streamWriter = new StreamWriter(outputFileName)) { await collection.Find(new BsonDocument()) .ForEachAsync(async (document) => { using (var stringWriter = new StringWriter()) using (var jsonWriter = new JsonWriter(stringWriter)) { var context = BsonSerializationContext.CreateRoot(jsonWriter); collection.DocumentSerializer.Serialize(context, document); var line = stringWriter.ToString(); await streamWriter.WriteLineAsync(line); } }); } 

The output file should look this:

{ "_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