Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring data mongodb query skip()的工作方式与它应该的工作方式不同。_Java_Spring_Mongodb_Spring Mvc_Spring Data - Fatal编程技术网

Java Spring data mongodb query skip()的工作方式与它应该的工作方式不同。

Java Spring data mongodb query skip()的工作方式与它应该的工作方式不同。,java,spring,mongodb,spring-mvc,spring-data,Java,Spring,Mongodb,Spring Mvc,Spring Data,我发现使用mongoOperations的查询中的skip()行为很有趣 我有以下代码: if (question.getCategory() == "" && question.getDifficulty() == 0 && question.getNumberOfCorrectAnswers() == 0) return mongoOperations.find(new Query(Criteria.where("question").reg

我发现使用mongoOperations的查询中的skip()行为很有趣

我有以下代码:

if (question.getCategory() == "" && question.getDifficulty() == 0 && question.getNumberOfCorrectAnswers() == 0) 
        return mongoOperations.find(new Query(Criteria.where("question").regex(questionPattern, "i"))
        .limit(getLimit()).skip(getSkip()), Question.class);
我在搜索方法中使用它。我想分页。例如,将结果限制为10,并跳过前5个

limit()工作正常,但是skip()在获得值1时显示集合中的第一个文档。limit()默认为0,以不缩短范围

我签入了mongodb shell,skip(1)从第二个开始查看文档


有人知道如何解决这个问题吗?

你能试试这个吗:

Criteria criteria = Criteria.where("question").regex(questionPattern, "i");
Query query = Query.query(criteria);
query.limit(getLimit());
query.skip(getSkip());
return mongoOperations.find(query, Question.class);

它产生了同样的效果。我收集了6份文件。当我跳过2时,它会显示前2个,而不是从3到6。您是否尝试调试代码?我怀疑你甚至没有访问if子句<代码>问题。getCategory()。应该是
“”.equals(question.getCategory())
我发现了真正的问题。我使用angularJS,通过某种神秘的方式,我的ng模型发生碰撞,从两个不同模型绑定的两个输入中,第一个值进入第二个范围,而不是第一个范围。看起来你的查询中缺少了一个
排序
?如果不使用特定的排序顺序,
skip
将不会为分页返回可预测的结果。根据Mongo文档,将skip()置于limit()之前可能很重要-