Найти в словаре в монго - PullRequest
       22

Найти в словаре в монго

1 голос
/ 20 марта 2020

Я должен найти в словаре в базе данных mon go.

    class Person
    {
        public string Name { get; set; }
        public Dictionary<int,string> AgePersons { get; set; }
    }

Я попробовал два варианта:

  _database.Find(v => v.Name == "test" && v.AgePersons.Any(el => el.Key == 12 && el.Value == "person_name")).ToList();

Я получил ошибку: Дерево выражений не поддерживается: {document} {dc} '

  _database.Find(v => v.Name == "test" && v.AgePersons[12] == "person_name"]).ToList();

Я получил ошибку:' v.AgePersons.get_Item (12) не поддерживается. '

enter image description here

Как мне решить?

1 Ответ

0 голосов
/ 22 марта 2020

Простой вариант - сохранить ваши объекты как:

public class Document
{
    public String Name { get; set; }
    public List<Item> People { get; set; }
}

public class Item
{
    public String Key { get; set; }
    public String Value { get; set; }
}

Затем сопоставить ваши данные для чтения / записи между вашими классами и этими.

Возможно, лучшим вариантом будет измените ваши данные при сохранении в:

public class Item
{
    public String Name { get; set; }
    public String Key { get; set; }
    public String Value { get; set; }
}

Тогда поиск Name по Key и Value будет намного проще, и вы все равно можете собрать Item s в один объект путем запроса по имени или путем агрегирования и использования имени groupBy в качестве последнего шага в конвейере.

Это также позволило бы упростить добавление или удаление отдельных элементов без изменения больших документов.

...