Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Exception when adding range index to Azure DocumentDB collection

I'm trying to add a range index to a specific property in an Azure DocumentDB collection as described in this article. When my code to create the collection is executed I get the following error:

The special mandatory indexing path \\"\/\\" is not provided in any of the path type sets. Please provide this path in one of the sets.

The code I'm using to create the collection is:

var collection = new DocumentCollection { id = "myCollectionID" };

collection.IndexingPolicy.IncludedPaths.Add(new IndexingPath
{
    IndexType = IndexType.Range,
    Path = "/\"TimeStamp\"/\"Epoch\"/?",
    NumericPrecision = 7
});

this._client.CreateDocumentCollectionAsync(database.SelfLink, collection);

The code works if I set the path of the index to simply "/", but I'd prefer to be able to create the index on specific properties. What am I doing wrong?

like image 980
Andy Gibson Avatar asked May 09 '15 11:05

Andy Gibson


1 Answers

You have to include "/" as an additional IncludedPath like:

var collection = new DocumentCollection { id = "myCollectionID" };

collection.IndexingPolicy.IncludedPaths.Add(new IndexingPath
{
    IndexType = IndexType.Range,
    Path = "/\"TimeStamp\"/\"Epoch\"/?",
    NumericPrecision = 7
});

collection.IndexingPolicy.IncludedPaths.Add(new IndexingPath
{
    IndexType = IndexType.Hash,
    Path = "/"
});

this._client.CreateDocumentCollectionAsync(database.SelfLink, collection);

Alternatively, if you want to exclude every other path completely from indexing, you can do the following:

var collection = new DocumentCollection { id = "myCollectionID" };

collection.IndexingPolicy.IncludedPaths.Add(new IndexingPath
{
    IndexType = IndexType.Range,
    Path = "/\"TimeStamp\"/\"Epoch\"/?",
    NumericPrecision = 7
});

collection.IndexingPolicy.ExcludedPaths.Add("/");

this._client.CreateDocumentCollectionAsync(database.SelfLink, collection);

DocumentDB always requires you to either include or exclude "/", so that the indexing scheme is unambiguous. Hope this helps.

like image 147
Aravind Krishna R. Avatar answered Nov 17 '22 05:11

Aravind Krishna R.