MongoDB - запрос значения в словаре - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть коллекция Разговоры , содержащая Разговор документы вроде этого (упрощенно, чтобы добраться до сути):

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 обрабатывает этот тип запроса (который на первый взгляд выглядит сложным и требует много вычислительной мощности)?
  • Если это не так, как вы справились бы лучше?

1 Ответ

0 голосов
/ 05 апреля 2020
Query = Builder.Eq(doc => doc.Members.ContainsKey(user.Id), true);

Похоже на сканирование коллекции.

Можно ли отслеживать разговоры в каждом документе участника? Это может быть достигнуто с помощью массива или подколлекции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...