如何对嵌套数组进行排序并在mongodb中的第一个元素上应用搜索?

时间:2018-11-05 10:18:52

标签: arrays mongodb .net-core mongodb-query

我必须对mongo db中的嵌套数组进行搜索和排序。

以下是我的查询的详细信息:

  1. 首先,我必须在日期字段(EntryTime)上按降序对嵌套数组(ActionLog)进行排序。
  2. 然后需要在嵌套数组的第一条记录上应用一些“开始”日期和“结束”日期过滤器。

这是我的模特。

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。

请让我知道我该如何实现??

谢谢。

0 个答案:

没有答案