cosmos-db
  1. cosmos-db-user-defined-functions

User-Defined Functions in CosmosDB with .NET

CosmosDB allows users to define their own custom functions in JavaScript using the User-Defined Functions (UDFs) feature. In this tutorial, we will learn how to create and use UDFs in CosmosDB with .NET.

Syntax

The syntax for creating a UDF in CosmosDB with .NET is as follows:

// Define the UDF as a string
string udf = @"function functionName(arg1, arg2) {
                    // Function body
               }";

// Create the UDF using CosmosDB client
Uri udfUri = await client.CreateUserDefinedFunctionAsync(collectionUri, new UserDefinedFunction { Id = "functionName", Body = udf });

Example

Let's create a simple UDF that converts an input string to uppercase.

string udf = @"function toUpper(inputString) {
                    return inputString.toUpperCase();
               }";

Uri udfUri = await client.CreateUserDefinedFunctionAsync(collectionUri, new UserDefinedFunction { Id = "toUpper", Body = udf });

Output

Once the UDF is created, we can use it in our CosmosDB queries like any other built-in function.

IQueryable<MyDocument> query = client
                                .CreateDocumentQuery<MyDocument>(collectionUri)
                                .Where(d => d.Name == toUpper("john"));

Explanation

In the above example, we defined a UDF called toUpper that takes an input string and returns its uppercase version. This UDF is then used in a CosmosDB query to filter documents whose Name property matches the uppercase version of "john".

CosmosDB allows users to define a UDF with any valid JavaScript code, including access to variables and external APIs.

Use

UDFs in CosmosDB can be used for a variety of purposes, such as:

  • Custom data transformations
  • Complex calculations
  • String manipulations
  • Regular expression matching
  • Accessing external APIs

UDFs can be used in both SQL and MongoDB API queries in CosmosDB.

Important Points

  • UDFs can only be defined and used within a CosmosDB database account.
  • UDFs should be kept simple and avoid performance-intensive operations.
  • UDFs should not have any side effects or modify documents in the database.
  • UDFs are executed within the CosmosDB server and cannot access resources outside the database account.
  • CosmosDB supports JavaScript language version 1.6 for UDFs.

Summary

In this tutorial, we learned how to create and use User-Defined Functions (UDFs) in CosmosDB with .NET. UDFs allow us to define custom JavaScript functions for use in our CosmosDB queries and can be used for a variety of purposes. It is important to keep UDFs simple and avoid performance-intensive or document-modifying operations.

Published on: