Arnab
Arnab

Reputation: 2354

Inserting json documents in DocumentDB

In DocumentDB documentation examples, I find insertion of C# objects.

// Create the Andersen family document.
Family AndersenFamily = new Family
{
    Id = "AndersenFamily",
    LastName = "Andersen",
    Parents =  new Parent[] {
        new Parent { FirstName = "Thomas" },
        new Parent { FirstName = "Mary Kay"}
    },
    IsRegistered = true
};

await client.CreateDocumentAsync(documentCollection.DocumentsLink, AndersenFamily);

In my case, I'm receiving json strings from application client and would like to insert them in DocumentDB without deserializing them. Could not find any examples of doing something similar.

Any help is sincerely appreciated..

Thanks

Upvotes: 6

Views: 6324

Answers (1)

Ryan CrawCour
Ryan CrawCour

Reputation: 2728

Copied from the published .NET Sample code -

    private static async Task UseStreams(string colSelfLink)
    {
        var dir = new DirectoryInfo(@".\Data");
        var files = dir.EnumerateFiles("*.json");
        foreach (var file in files)
        {
            using (var fileStream = new FileStream(file.FullName, FileMode.Open, FileAccess.Read))
            {
                Document doc = await client.CreateDocumentAsync(colSelfLink, Resource.LoadFrom<Document>(fileStream));
                Console.WriteLine("Created Document: ", doc);
            }
        }

        //Read one the documents created above directly in to a Json string
        Document readDoc = client.CreateDocumentQuery(colSelfLink).Where(d => d.Id == "JSON1").AsEnumerable().First();
        string content = JsonConvert.SerializeObject(readDoc);

        //Update a document with some Json text, 
        //Here we're replacing a previously created document with some new text and even introudcing a new Property, Status=Cancelled
        using (var memoryStream = new MemoryStream(Encoding.UTF8.GetBytes("{\"id\": \"JSON1\",\"PurchaseOrderNumber\": \"PO18009186470\",\"Status\": \"Cancelled\"}")))
        {
            await client.ReplaceDocumentAsync(readDoc.SelfLink, Resource.LoadFrom<Document>(memoryStream));
        }
    }

Upvotes: 8

Related Questions