사용자가 여러 가지 매개 변수를 사용하여 내 MongoDB 데이터베이스를 쿼리 할 수있는 시스템에서 작업하고 있습니다. 사용자가 쿼리하면 20 개의 결과가 표시됩니다. 그러나 사용자는 추가로 20 개의 결과를 얻고 다른 하나는 얻고 자 할 수 있습니다.MongoDB 이전 쿼리를 다시 시작하거나 문서로 건너 뛰기
그런 시스템을 프로그래밍 할 때 내 첫 번째 본능은 "건너 뛰기"기능을 사용하고 결과의 수를 건너 뛰는 것입니다. 사용자에게 반환되었습니다. 그러나이 문제는 사용자의 쿼리와 일치하는 많은 (수백 또는 수천 개의) 새 문서가 사용자가 새로운 쿼리를 실행하여 새로운 결과를 얻는 시간에 MongoDB에 추가 될 가능성이 높다는 것입니다. 따라서 "건너 뛰기"는 마지막으로 해제 된 쿼리를 다시 시작하지 않습니다.
예 :
Documents:
1,2,3,4,5,6,7,8,9,10,11,12,13,14, etc...
문서 번호 20에 출발합니다. 사용자의 다음 검색어는 20을 건너 뜁니다. 그러나 500 개의 새 문서가 추가되었습니다. 이제 건너 뛰기는 마지막 쿼리가 있던 곳에서 쿼리를 가져 오기 위해 520이어야합니다. 그러나 현재 사용자가 마지막으로 쿼리 한 이후에 추가 된 문서의 수를 추적 할 수있는 방법이 없습니다.
내 생각은 사용자가 마지막 쿼리에서받은 마지막 문서의 ID와 사용자가 자신의 모든 쿼리에서받은 문서의 총 개수를 제출하게하는 것입니다. 나는 MongoDB에게 사용자가받은 문서의 총 수를 "건너 뛰기"라고 말할 것입니다. 1. 사용자가 중단 한 곳을 찾을 때까지 각 문서를 사용자가 보낸 문서의 ID와 비교할 것입니다.
예 :
public static String getDocument(String lastId, int skip, BasicDBObject query)
{
DBCursor cursor = collection.find(query).skip(skip);
while(cursor.hasNext())
{
BasicDBObject obj = (BasicDBObject) cursor.next();
String id = obj.getString("id");
if(id.equals(lastId))
{
//Then we know that here is where we left off, and to start getting new documents
}
}
}
이, 나는 가정, 많은 새 문서가 추가 된 경우 비효율적이며, 예상 질의 시간이 느리게 만들 수 있습니다. 이것을 가정하는 것이 맞습니까?
주어진 문서 ID 이전에 모든 결과를 건너 뛰도록 MongoDB를 쿼리하는 방법이 있습니까? 그렇지 않다면 그러한 문제를 다루는 표준 방법이 있습니까? 나는 무엇을 해야할지에 대하여 상실감에 처해있다.