Java Spring data mongodb query skip()的工作方式与它应该的工作方式不同。
我发现使用mongoOperations的查询中的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
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()之前可能很重要-