Как обеспечить индексирование содержимого массива с помощью выражений LINQ с помощью драйвера MongoDB C #?
В настоящее время у меня есть объект домена, который выглядит примерно так:
public class Team
{
public Team()
{
Members = new List<LazyReference>();
}
public MongoDB.Bson.ObjectId Id { get; set; }
public string DisplayName { get; set; }
public LazyReference Leader { get; set; }
public List<LazyReference> Members { get; private set; }
}
public class LazyReference
{
public MongoDB.Bson.ObjectId Id { get; set; }
}
В моей коллекции я инициализировал пару таких индексов:
collection.EnsureIndex(IndexKeys<Team>.Ascending(t => t.DisplayName), IndexOptions.SetUnique(true));
collection.EnsureIndex(IndexKeys<Team>.Ascending(t => t.Leader.Id), IndexOptions.SetUnique(false));
Как я могу сделать то же самое, чтобы обеспечить быстрый индекс участников при поиске по Members [n] .Id, где n - любой из членов? Я знаю, что могу создать индекс следующим образом, но поскольку при этом не используются выражения LINQ, это небезопасно для будущих переименований свойств.
collection.EnsureIndex(new IndexKeysBuilder().Ascending("Members._id"), IndexOptions.SetUnique(false));
Я также пробовал следующее, но он индексирует только указанный индекс:
collection.EnsureIndex(IndexKeys<Team>.Ascending(t => t.Members[0].Id), IndexOptions.SetUnique(false));
LazyReference
ваш собственный класс? Не могли бы вы опубликовать его код или описать его назначение? - person Zaid Masud   schedule 18.09.2013