Skip to content

mallow42/WebJobs.Mongo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 

Repository files navigation

Azure Functions MongoDB Extensions

This repo contains MongoDB binding extensions for the Azure WebJobs SDK. See the Azure WebJobs SDK repo for more information. The binding extensions in this repo are available as the Mallow.WebJobs.Mongo nuget package.

Usage

Input binding

Example azure function that can be used to obtain one document via it's ID.

public static Task<IActionResult> GetDocumentById
(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req,
    [Mongo(DatabaseId = "TestDb", CollectionId = "Collection", ConnectionString = "%ConnectionString%", Id = "{Query.id}")] Document input
)
{
    if (input != null)
    {
        return Task.FromResult<IActionResult>(new OkObjectResult(input));
    }

    return Task.FromResult<IActionResult>(new BadRequestObjectResult("Document not found"));
}

Example azure function that can be used to obtain multiple documents using filter. Where filter is standard MongoDB query.

public static Task<IActionResult> GetDocuments
(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req,
    [Mongo(DatabaseId = "TestDb", CollectionId = "Collection", ConnectionString = "%ConnectionString%", Filter = "{Query.filter}")] IEnumerable<TestDocument> input
)
{
    return Task.FromResult<IActionResult>(new OkObjectResult(input));
}

Output binding

Example azure function that can be used to create multiple new documents.

public static async Task<IActionResult> InsertNewDocuments
(
    [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestMessage  req,
    [Mongo(DatabaseId = "TestDb", CollectionId = "Collection", ConnectionString = "%MongoConnectionString%")] IAsyncCollector<AsyncCollectorTestDocument> collector
)
{
    var documents = await req.Content.ReadAsAsync<Document[]>();
    foreach (var document in documents)
    {
        await collector.AddAsync(document);
    }

    return new OkObjectResult(new {Status = "OK"});
}

Example azure function that can be used to create/replace multiple new documents.

public static async Task<IActionResult> InsertNewDocuments
(
    [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestMessage  req,
    [Mongo(DatabaseId = "TestDb",
           CollectionId = "Collection",
           ConnectionString = "%MongoConnectionString%",
           Mode = InsertMode.CreateOrReplace)] IAsyncCollector<AsyncCollectorTestDocument> collector
)
{
    var documents = await req.Content.ReadAsAsync<Document[]>();
    foreach (var document in documents)
    {
        await collector.AddAsync(document);
    }

    return new OkObjectResult(new {Status = "OK"});
}

License

the MIT License