Как отсортировать вложенный массив и применить поиск по первому элементу в mongodb? - PullRequest
0 голосов
/ 05 ноября 2018

Я должен применить поиск и сортировку к вложенному массиву в mongo db.

Ниже приведены детали моего запроса:

  1. Сначала мне нужно отсортировать вложенный массив (ActionLog) по убыванию в поле даты (EntryTime).
  2. Затем необходимо применить некоторый фильтр даты "from" и "to" к первой записи вложенного массива.

Вот мои модели.

public class Parent
{
    [BsonId]
    public ObjectId ParentId { get; set; }

    [BsonElement("parentName")]
    public string ParentName { get; set; }   

    public Datetime RegistrationDate { get; set; }       

    public IEnumerable<TestItems> ActionLog { get; set; }       
}

Дочерний / вложенный массив, для которого необходимо выполнить сортировку и поиск

public class TestItems
{
    [BsonElement("entryTime")]
    public DateTime EntryTime { get; set; }

    [BsonElement("entryName")]
    public DateTime EntryName { get; set; }
}

Так что мне нужны места, которые были недавно обновлены; здесь нам нужно только применить сортировку ко времени входа, а затем применить фильтр к недавней записи времени входа.

Вот, как я пишу запрос, но безуспешно.

var builder = Builders<Parent>.Filter;
FilterDefinition<Parent> filter = null;
if (filterType == InsuranceCaseFilterType.RegistrationDate)
{
   filter = builder.Where(ic => statusFilter.Contains(ic.ParentName) &&
                                                  ic.RegistrationDate >= from && ic.RegistrationDate <= to);
}
else if (filterType == InsuranceCaseFilterType.LastModifiedDate)
{
  filter = builder.Where(ic => statusFilter.Contains(ic.ParentName) && 
  ic.ActionLog.OrderByDescending(c => c.EntryTime).First().EntryTime >= from 
  && ic.ActionLog.OrderByDescending(c => c.EntryTime).First().EntryTime 
  <=To); 
 }

Но когда я выполняю запрос, я получаю сообщение об ошибке

{document} {ActionLog} .OrderByDescending (z => z.EntryTime) .FirstOrDefault (). EntryTime не поддерживается.

Пожалуйста, дайте мне знать, как мне этого добиться ???

Заранее спасибо.

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