Uploaded image for project: 'C# Driver'
  1. C# Driver
  2. CSHARP-1309

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

    • Type: Icon: New Feature New Feature
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • 3.0.0
    • Affects Version/s: 2.0
    • Component/s: API
    • 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?

      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@mongodb.com James Kovacs
            Reporter:
            craig.wilson@mongodb.com Craig Wilson
            Votes:
            10 Vote for this issue
            Watchers:
            11 Start watching this issue

              Created:
              Updated:
              Resolved: