与skip()和limit()一起使用的Distinct()命令

Vin*_*tin 6 mongodb mongodb-java spring-data-mongodb

我在MongoDB集合中有这些项目:

{x: 1, y: 60, z:100}
{x: 1, y: 60, z:100}
{x: 1, y: 60, z:100}
{x: 2, y: 60, z:100}
{x: 2, y: 60, z:100}
{x: 3, y: 60, z:100}
{x: 4, y: 60, z:100}
{x: 4, y: 60, z:100}
{x: 5, y: 60, z:100}
{x: 6, y: 60, z:100}
{x: 6, y: 60, z:100}
{x: 6, y: 60, z:100}
{x: 7, y: 60, z:100}
{x: 7, y: 60, z:100}
Run Code Online (Sandbox Code Playgroud)

我想查询x的不同值(即[1,2,3,4,5,6,7])...但我只想要它们的一部分(类似于我们可以用skip(a)获得的)并限制(b)).

我如何使用MongoDB的java驱动程序(如果可能,使用spring-data-mongodb)?

Vla*_*lov 12

在mongo shell中使用聚合框架很简单:

db.collection.aggregate([{$group:{_id:'$x'}}, {$skip:3}, {$limit:5}])
Run Code Online (Sandbox Code Playgroud)

对于java看:在java中使用聚合框架

  • 来自mongo jira(2017):“如果您有700万个文档,并且执行了collection.aggregate([[$$ group:{_id:“ $ field”}},{$ limit:1}]),您将等待〜 20秒。” https://jira.mongodb.org/browse/SERVER-2130?focusedCommentId=1623271&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-1623271 (2认同)