Я должен применить поиск и сортировку к вложенному массиву в mongo db.
Ниже приведены детали моего запроса:
- Сначала мне нужно отсортировать вложенный массив (ActionLog) по убыванию в поле даты (EntryTime).
- Затем необходимо применить некоторый фильтр даты "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 не поддерживается.
Пожалуйста, дайте мне знать, как мне этого добиться ???
Заранее спасибо.