获取上个月内部记录的所有记录 - MongoDB C#SDK

时间:2015-01-31 15:41:56

标签: c# mongodb mongodb-.net-driver

我尝试使用C#SDK从我的MongoDB数据库中获取上个月中有任何活动的所有用户。

我的用户记录包含一个包含创建日期的统计记录列表(如ObjctId)。

public class UserRecord
{
    private string firstName;

    public ObjectId Id
    {
        get;
        set;
    }

    public List<ObjectId> Statistics
    {
        get;
        set;
    }
}

我的查询构建器功能如下所示:

static IMongoQuery GenerateGetLiveUsersQuery(DateTime lastStatistic)
{
        List<IMongoQuery> queries = new List<IMongoQuery>();

        queries.Add((Query<UserRecord>.GTE(U =>
             U.Statistics.OrderByDescending(x => x.CreationTime).First().CreationTime
               , lastStatistic)));

          ///.... More "queries.Add"...

        return Query.And(queries);           
}

不确定我做错了什么,但在尝试构建查询(GTE查询)时遇到System.NotSupportedException错误消息。

  

无法确定表达式的序列化信息:   (UserRecord U)=&gt;   Enumerable.First(Enumerable.OrderByDescending(U.Statistics,(ObjectId x)=&gt; x.CreationTime))。CreationTime。

1 个答案:

答案 0 :(得分:2)

以下查询应该有效

var oId = new ObjectId(lastStatistic, 1, 1, 1);
var query = Query<UserRecord>.GTE(e => e.Statistics, oId);

您可以根据ObjectId日期创建lastStatistic,这是您的截止日期。然后,您只需查询UserRecord集合,即可查找统计信息列表中项目大于ObjectId的任何记录。