如何使用 MongoDB C# 驱动程序确保对数组内容使用 LINQ 表达式的索引?
我目前有一个大致如下所示的域对象:
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));