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



我正在尝试使用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查询)时收到enSystem.NotSupportedException错误消息。

无法确定表达式的序列化信息: (用户记录 U) => Enumerable.First(Enumerable.OrderByDescending(U.Statistics, (ObjectId x) => x.CreationTime)).创造时间。

以下查询应该有效

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

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

最新更新