MongoDB和.NET:使用FilterDefinition

时间:2016-10-06 08:50:08

标签: asp.net mongodb mongodb-.net-driver

我有一个类,它从输入中创建一个过滤器列表。 可以通过为每个过滤器调用函数找到过滤器,如下所示:

public void created_after(string date)
{
    DateTime convertedDate = Convert.ToDateTime(date);
    filters.Add(Builders<User>.Filter.Gte(x => x.Created, convertedDate));
}

现在我需要在用户的子数组上的字段上进行分段。 在这种情况下,我只需要知道任何警报是否具有高于给定日期的Created值。 我的数据如下:

{ 
    "DisplayName" : "PestisanRadu", 
    "Alerts" : [
        {
            "UserId" : ObjectId("577a26a12b365917c4d67dd5"), 
            "Created" : ISODate("2016-10-05T09:17:44.382+0000")
        }, 
        {
            "UserId" : ObjectId("577a26a82b365917c4d68009"), 
            "Created" : ISODate("2016-10-05T18:44:45.743+0000")
        }
    ], 
    "Created" : ISODate("2016-10-05T09:17:43.423+0000")
}

要使类工作,我需要保留FilterDefinition类型。

1 个答案:

答案 0 :(得分:1)

使用以FieldDefinition作为参数的其他相同方法,在您的情况下将是

filters.Add(Builders<User>.Filter.Gt("Alerts.Created", convertedDate));

请注意,字符串"Alerts.Created"FieldDefinition