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();