У меня есть коллекция Разговоры , содержащая Разговор документы вроде этого (упрощенно, чтобы добраться до сути):
public class Conversation
{
public ObjectId Id { get; set; }
public Dictionary<ObjectId, DateTime> Members { get; set; }
}
Словарь Участники сопоставляет идентификаторы участников с датой их входа в диалог.
Затем в коллекции Беседы , если для конкретного пользователя , я хочу запросить все беседы , в которых он участвует, я делаю следующее:
public List<Conversation> GetConversations(in User user)
{
Query = Builder.Eq(doc => doc.Members.ContainsKey(user.Id), true);
return Find(Query).ToList();
}
Вопрос в том, является ли это правильным способом сделать это ?
- Если это так, то почему? Как MongoDB обрабатывает этот тип запроса (который на первый взгляд выглядит сложным и требует много вычислительной мощности)?
- Если это не так, как вы справились бы лучше?