首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在一个mongodb查询中限制嵌入式数组中的元素数

如何在一个mongodb查询中限制嵌入式数组中的元素数
EN

Stack Overflow用户
提问于 2013-10-04 21:19:11
回答 1查看 733关注 0票数 0

我有以下芒果文件,代表网站和链接找到它。

代码语言:javascript
复制
 {"website":
     "id":"123456",
     "links":[
                 "link1","link2","link3",..."link1000"
                ]
 }

我希望从id找到的特定文档中返回有限数量的链接,以支持分页,例如page=1,limit=100应该返回前100个链接。我试过这样的方法,但不管用。有办法限制子文档的数量吗?

代码语言:javascript
复制
 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

代码语言:javascript
复制
 String fields="{'links':{'$slice':["+skip+","+limit+"]}}";

但这不太好,因为它对分页不太有用。例如,如果我有43个链接,page=2和limit=100将返回43个结果,所以在创建查询之前我必须检查链接的数量。

你对如何解决这个问题有什么建议吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-05 15:22:01

正确的方法是使用$slice运算符。为了便于分页,您必须更改确定“跳过”和“限制”的方法。

例如,你可以从页面*限制中得到“跳过”的值,例如第2页*限制10 =跳过20。然后使用切片操作符应该可以正常工作。如果您“跳过”值超出数组长度,那么您将在结果中返回一个空数组

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19190964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档