Azure Cosmos DB

Have feedback for Azure Cosmos DB product? Submit your idea here or upvote other ideas. All feedback is monitored and reviewed by the Azure Cosmos DB team. 

This site is for feature suggestions only. For technical questions or issues, please submit them to StackOverflow,where we and the community can better help you.

Please use the following categories when submitting your idea.

SQL API: Query language features, syntax using SQL API, indexing, any other core features in Azure Cosmos DB.

Gremlin API: Graph features and capabilities using Gremlin API.

Cassandra API: Features and capabilities using Cassandra API.

MongoDB API: Features and capabilities using MongoDB API.

Table API: Features and capabilities using Table API.

Etcd API: Features related to using etcd as a configuration store for Kubernetes.

Azure Synapse Link: Features related to Azure Cosmos DBanalytical store and Azure Synapse Analytics run-time support

Built-in Notebooks: Features related to built-in Notebooks in Azure Cosmos DB.

SDK: Features related to Azure Cosmos DB SDKs for SQL API.

Change Feed: Features related to Change Feed.

Management: All management features, backup/restore,monitoring, ARM, PowerShell and CLI.

Portal: All features for Azure Portal and Cosmos DB Explorer.

Emulator: Features related to the Azure Cosmos Emulator.

Other: Features not related to any other category.

Security:
Authentication, authorization,permissions and encryption features.

Monitoring:
Metrics, monitoring, alerts,and diagnostics features.

Server-side: Stored procedures, Triggers,and User-Defined Functions.
  • Hot ideas
  • Top ideas
  • New ideas
  • My feedback
  1. Unique indexes on Graph vertex/edge properties

    I need to ensure global uniqueness for things like username/email/mobile number/etc. Since we no longer have traditional SQL, this capability is lacking. Allow me to define unique indexes so the write region has only one occurrence of a distinct value.

    Ideally, this should also make FILTERED unique indexes possible.

    87 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Microsoft
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    6 comments  ·  Gremlin API  ·  Flag idea as inappropriate…  ·  Admin →
  2. Unique indexes on existing collections

    Currently, CosmosDB requires unique indexes to be created before inserting data in an empty collection. MongoRestore creates indexes after importing data, which is incompatible with CosmosDB's flow, and forces the user to create unique indexes manually in order to import data. This is impractical for those who require daily imports on several collections. CosmosDB should be able to import data using MongoRestore's flow, by allowing unique indexes to be created after inserting data.

    82 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Microsoft
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    2 comments  ·  SQL API  ·  Flag idea as inappropriate…  ·  Admin →
  3. Support for Graph API in Data Migration tool

    Looking for a way to do backup/restore or manual export/import of a Cosmos DB graph using Graph API - or equivalent.
    I want to be able to restore state of a database while developing and found that Data Migration tool can do what I want, but does not support Graph API.

    81 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Microsoft
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    2 comments  ·  Gremlin API  ·  Flag idea as inappropriate…  ·  Admin →
  4. Unique index in nested documents or arrays

    Right now I'm not able to create unique indexes in nested documents.
    Using MongoDB Driver.

    Error:
    {"ok": 0.0, "errmsg": "Unique index does not currently support nested documents or arrays.", "code": 115, "codeName": "CommandNotSupported"};

    72 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Microsoft
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    4 comments  ·  MongoDB API  ·  Flag idea as inappropriate…  ·  Admin →
  5. Add support for latest $lookup step in aggregation pipeline

    In v3.6 of Mongo, the $lookup step of an aggregation pipeline added the ability to join on conditions instead of just an exact match. This is thoroughly documented in the official documentation.

    https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/index.html#join-conditions-and-uncorrelated-sub-queries

    When I attempt to use the step in CosmosDB, I receive the error "Unrecognized parameter to $lookup: let" which indicates that the latest API is not yet supported.

    72 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Microsoft
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    12 comments  ·  MongoDB API  ·  Flag idea as inappropriate…  ·  Admin →
  6. Delete notifications for change feed

    Delete notifications for Cosmosdb change feed.

    Problem:
    When deleting an item in Cosmosdb it is not conveyed to the change feed.

    Proposed solution:
    Implement a delete notification in the same manner as for upserts.
    If the deleted item could be conveyed it is good but the id is better than nothing.

    If it helps I wrote a tad more here: https://www.selfelected.com/cosmosdb-change-feed-and-deleted-items/

    71 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Microsoft
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    9 comments  ·  Change Feed  ·  Flag idea as inappropriate…  ·  Admin →
  7. Data masking feature in Azure Cosmosdb

    Request you to please add data masking feature to Azure CosmodDB to protect sensitive data like always encryption feature in SQL Server which allows clients to encrypt sensitive data inside client applications and never reveal the encryption keys to the Database Engine ( SQL Database or SQL Server). As a result, Always Encrypted provides a separation between those who own the data (and can view it) and those who manage the data (but should have no access)

    Ref : https://docs.microsoft.com/en-us/sql/relational-databases/security/encryption/always-encrypted-database-engine?view=sql-server-2017

    69 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Microsoft
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    5 comments  ·  Security  ·  Flag idea as inappropriate…  ·  Admin →
  8. Configure RU per region

    For a database/collection that is made available in several regions, make it possible to provision RU capacity independently in each region. Use case: Secondary backup region that exists only as an up-to-date mirror of data in case the primary becomes unavailable, not to offload read operations under normal operation. Currently this means provisioning unused RU capacity, at a high cost, in the secondary region.

    68 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Microsoft
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    5 comments  ·  Other  ·  Flag idea as inappropriate…  ·  Admin →

    Hi Magnus. This is currently unplanned by us for our road map. Some context and feedback for you on this.

    First, to do the replication itself to the secondary region you need RU/s sufficient to support the request rates for the primary region itself. Replication and writing to the secondary region itself is not free so there needs to be sufficient throughput provisioned to do that.

    Second, for the secondary region to be able to function as the primary should a fail over occur, the replica region itself needs sufficient throughput to function as the primary.

    Thanks again for your suggestion. Will mark as unplanned for now in case circumstances ever do change.

  9. Azure Cosmos DB doesn't support basic sort

    Mongo supports case insensitive sort through collation usage.
    When I tested on mongo locally it worked, when deployed on azure platform it just started throwing error:
    "MongoError: server bmcldocdb.documents.azure.com:10255 does not support collation"

    67 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Microsoft
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    2 comments  ·  MongoDB API  ·  Flag idea as inappropriate…  ·  Admin →
  10. Set Account Level throughput on Cosmos DB Table API with ARM template

    Make it possible to set "Account level throughput" on a Table API account through ARM template or Powershell.

    According to the official Twitter handle of Azure Cosmos DB, it is only possible to set the "Account level throughput" on a Table API database account through the Azure Portal. You cannot do this with an ARM template.
    https://twitter.com/AzureCosmosDB/status/1175071433229312001

    67 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Microsoft
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Management  ·  Flag idea as inappropriate…  ·  Admin →
  11. Compress query results

    Compress query results if requested by the client. This could significantly improve network throughput for large queries.

    67 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Microsoft
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  SQL API  ·  Flag idea as inappropriate…  ·  Admin →
  12. DISTINCT should use index if possible

    Currently one can query distinct values from documents using the DISTINCT keyword like in relational SQL.

    Example:

    SELECT distinct c.myField FROM c
    

    Related feature request: https://feedback.azure.com/forums/263030-azure-cosmos-db/suggestions/6719531-provide-support-for-distinct

    Unfortunately current DISTINCT is rather unusable as it seems to do a full scan even if there is an index present on the field. This feature does save some bandwidth when you really-really-really need this feature, but the RU consumption part is borderline-unacceptable for production use.

    Please consider improving the implementation to avoid full scan and use index, if possible.

    66 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Microsoft
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    3 comments  ·  SQL API  ·  Flag idea as inappropriate…  ·  Admin →
  13. Support $geonear query in Azure Cosmos DB Mongo API

    I want to transition my application to use Azure Cosmos DB. It is currently using MongoDB with the latest Mongo C# Driver.

    Most of the functionality is working with just updating the connection string to point to the Azure Cosmos DB.

    However some of the major functionality in my application makes use of MongoDB geonear functionality with code as below:

        public IEnumerable<Tuple<Location, double>> GeoNear(StagedLocation stagedLocation, int matchRadius)
    
    {
    var geoPoint = new BsonDocument
    {
    {"type","Point"},
    {"coordinates",new BsonArray(new []{ stagedLocation.Address.Longitude.Value, stagedLocation.Address.Latitude.Value })}
    };

    var geoNearOptions = new BsonDocument
    {
    {"near", geoPoint},
    {"spherical", true },
    {"limit", 20},
    {"distanceField", "Distance"},
    {"maxDistance", Convert.ToDouble(matchRadius)},
    };

    65 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Microsoft
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    5 comments  ·  MongoDB API  ·  Flag idea as inappropriate…  ·  Admin →
  14. Azure CosmosDB Data Migration Tool

    Allow import as well as (existing) export of command line, make option to save command line at bottom of dialog to make it easier to see.

    61 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Microsoft
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Other  ·  Flag idea as inappropriate…  ·  Admin →
  15. Support $GraphLookup

    $graphLookup is not implemented in Mongo API
    If you try to do this with Mongo API (or Cosmos DB) + Gremlin you need to know what the relationships are upfront. Need DYNAMIC joins 
    which MongoDB supports today.

    59 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Microsoft
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    2 comments  ·  MongoDB API  ·  Flag idea as inappropriate…  ·  Admin →
  16. [Gremlin] Paging Support

    Please add paging support for Cosmos Graph DB via the Gremlin API. Traversing the whole graph for a large set of vertices can be very expensive. Paging would allow better efficiency when targeting a subset of a large set of vertices.

    58 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Microsoft
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    under review  ·  1 comment  ·  Gremlin API  ·  Flag idea as inappropriate…  ·  Admin →
  17. Use Order By with Group By

    In the documentation for group by (https://docs.microsoft.com/en-us/azure/cosmos-db/sql-query-group-by) you state:

    You currently cannot use GROUP BY with an ORDER BY clause but this is planned.

    Adding here so we can hopefully get some feedback on its progress and to communicate its importance to the community.

    In all my use cases for using group by, I am only interested in returning a subset of the results which without order by I cannot. I must return all results and then order & filter them in the client which is poor from a performance and cost perspective or completely unfeasible depending on…

    58 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Microsoft
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  SQL API  ·  Flag idea as inappropriate…  ·  Admin →
  18. The ability to reference JavaScript libraries (e.g. underscore) within server-side scripting

    It'd be nice to be able to reference javascript libraries within server-side scripting. Something like an AMD or RequireJS loader.

    For example:
    var _ = require('lodash');

    57 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Microsoft
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    4 comments  ·  Server-side  ·  Flag idea as inappropriate…  ·  Admin →
  19. stored procedures & functions in .NET (C#)

    Would be great to have the option to implement stored procedures, functions and triggers in .NET (C#) as well.

    57 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Microsoft
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    3 comments  ·  Server-side  ·  Flag idea as inappropriate…  ·  Admin →
  20. Improve range() step costs

    Graph API is nice, however in its current state it is unusable for large data sets due to high RU costs.
    We are trying to implement paging for retrieving large amounts of data, however RU cost is unacceptable. Query "g.V().range(0,100)" costs 63.11 RU, however "g.V().range(2000,2100)" costs 338.06 RU even though it is same amount of data. Higher values are even more expensive meaning it's impossible to retrieve high amount of data without scaling up throughput.

    55 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Microsoft
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    4 comments  ·  Gremlin API  ·  Flag idea as inappropriate…  ·  Admin →
  • Don't see your idea?

Feedback and Knowledge Base