- Examples
- Exporting JSON
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