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

    XMLWordPrintableJSON

Details

    • Icon: New Feature New Feature
    • Resolution: Unresolved
    • Icon: Major - P3 Major - P3
    • None
    • 2.0
    • API
    • None

    Description

      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");
      

      Attachments

        Activity

          People

            Unassigned Unassigned
            craig.wilson@mongodb.com Craig Wilson
            Votes:
            10 Vote for this issue
            Watchers:
            10 Start watching this issue

            Dates

              Created:
              Updated: