IndexKeysDefinitionBuilder should support defining multikey indexes on members of an array of embedded documents

XMLWordPrintableJSON

    • Type: New Feature
    • Resolution: Fixed
    • Priority: Major - P3
    • 3.0.0
    • Affects Version/s: 2.0
    • Component/s: API
    • None
    • None
    • Fully Compatible
    • Not Needed
    • Hide

      1. What would you like to communicate to the user about this feature?
      2. Would you like the user to see examples of the syntax and/or executable code and its output?
      3. Which versions of the driver/connector does this apply to?

      Show
      1. What would you like to communicate to the user about this feature? 2. Would you like the user to see examples of the syntax and/or executable code and its output? 3. Which versions of the driver/connector does this apply to?
    • None
    • None
    • None
    • None
    • None
    • None

      Given the following classes:

      public class User
      {
          public Object Id { get; set; }
          public IEnumerable<Login> Logins { get; set; }
          // etc...
      }
      
      public class Login
      {
          public string LoginProvider { get; set; }
          public string ProviderKey { get; set; }
          // etc...
      }
      

      There should be a type-safe way to create multikey indexes on members of the embedded Login documents. One possible way to express that could be:

      var indexKeysDefinition = Builders<User>.IndexKeys
          .Ascending(user => user.Logins.Select(login => login.LoginProvider))
          .Ascending(user => user.Logins.Select(login => login.ProviderKey));

      Workaround

      Use strings instead.

      var indexKeysDefinition = Builders<User>.IndexKeys
          .Ascending("Logins.LoginProvider")
          .Ascending("Logins.ProviderKey");
      

              Assignee:
              James Kovacs
              Reporter:
              Craig Wilson
              Votes:
              10 Vote for this issue
              Watchers:
              11 Start watching this issue

                Created:
                Updated:
                Resolved: