我有以下芒果文件,代表网站和链接找到它。
{"website":
"id":"123456",
"links":[
"link1","link2","link3",..."link1000"
]
}我希望从id找到的特定文档中返回有限数量的链接,以支持分页,例如page=1,limit=100应该返回前100个链接。我试过这样的方法,但不管用。有办法限制子文档的数量吗?
String query="{'website.id:'"+id+"'}";
String fields="{links:1}";
DBCursor dbCursor=this.getCollection(crawlersCollection)
.find(this.query(query),this.query(fields)).skip(skip).limit(limit);我尝试过的另一种方法是使用$slice
String fields="{'links':{'$slice':["+skip+","+limit+"]}}";但这不太好,因为它对分页不太有用。例如,如果我有43个链接,page=2和limit=100将返回43个结果,所以在创建查询之前我必须检查链接的数量。
你对如何解决这个问题有什么建议吗?
谢谢
发布于 2013-10-05 15:22:01
正确的方法是使用$slice运算符。为了便于分页,您必须更改确定“跳过”和“限制”的方法。
例如,你可以从页面*限制中得到“跳过”的值,例如第2页*限制10 =跳过20。然后使用切片操作符应该可以正常工作。如果您“跳过”值超出数组长度,那么您将在结果中返回一个空数组
https://stackoverflow.com/questions/19190964
复制相似问题