Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

like image 700
Arnab Avatar asked Aug 26 '15 12:08

Arnab


1 Answers

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));
        }
    }
like image 61
Ryan CrawCour Avatar answered Sep 22 '22 16:09

Ryan CrawCour