C# Mongodb C对嵌套数组使用跳过限制

C# Mongodb C对嵌套数组使用跳过限制,c#,mongodb,C#,Mongodb,我的班级: class Product { public string _id {get; set;} public IEnumerable<Item> Items {get; set;} public int ItemsCount {get; set;} } class Item { public string Name {get; set;} } 我只需要选择项目并为它们处理跳过限制分页。我可以存储在对象中的计数。是否可以使用mongo进行此操

我的班级:

class Product
{
    public string _id {get; set;}
    public IEnumerable<Item> Items {get; set;}
    public int ItemsCount {get; set;}
}

class Item
{
    public string Name {get; set;}
}

我只需要选择项目并为它们处理跳过限制分页。我可以存储在对象中的计数。是否可以使用mongo进行此操作,或者我是否应该将项目放入另一个集合?

这里有两种情况:

我们总是请求一个主文档,需要跳过/限制此特定数组

我们正在请求未知数量的文档,然后我们可以跳过/限制来自所有源文档的一种合并数组

这两种解决方案都使用带有$unwind阶段的聚合框架,不同之处在于第一种情况下的$match总是只返回一个文档,比如说,由objectId匹配的文档


欢迎评论

非常感谢!请您提供一些组码的例子好吗?谢谢您的时间!
var aggregate = collection.Aggregate().Match(x => x.Id == ourNeededId)
     .Unwind("Items").Skip(3).Limit(3).Project<Product>(project);
        var aggregate =
            collection.Aggregate()
                .Match(x => x._id == "some id here")
                .Unwind("Items")
                .Skip(3)
                .Limit(3)
                .Group(BsonDocument.Parse("{_id:{id:'$_id', ItemsCount:'$ItemsCount' },Items:{$push:'$Items'} }"))
                .Project<Product>(BsonDocument.Parse("{_id:'$_id.id', ItemsCount:'$_id.ItemsCount', Items:1  }"))
                .ToList();