/ / Jak po powrocie odpocząć w Spring boot z MongoDB? - wiosna, mongodb, paginacja

Jak Paginate po odprężeniu w Spring boot z MongoDB? - wiosna, mongodb, paginacja

Obecnie napotykam na taki problem:

Mam obiekt ZA który ma właściwość tablicy Bs. Chciałbym pokazać Bs w interfejsie, ale dlategojest zbyt dużo danych, muszę jakoś się paginować. Problem polega na tym, że przeprowadziłem pewne badania, ale nie mogłem znaleźć rozwiązania, które można najpierw odprężyć, a następnie dokonać paginacji.

ZA:

{
id : 1,
Bs : [{
id: 29
},{
id : 3
}]
}

Jeśli używam Aggregation, mogę rozwinąć Bs, ale później nie będę ich paginować. Paginacja jest głównym problemem.

Jeśli używam PagingAndSortingRepository, mogę się paginować, ale nie mogę się od tego oderwać, nawet jeśli odwijam ręcznie po tym, ponieważ przed odrodzeniem się paginacja, wynik nie będzie taki, jak powinien.

Jeśli używam Query - kryteria, mogę paginować z pominięciem i limitem, ale nadal nie wiem, jak się zrelaksować przed paginacją.

WIELKIE PYTANIE: Jak mogę się najpierw oderwać, a następnie dokonać paginacji rozwiniętego wyniku?

EDYTOWAĆ:

Przykładowe obiekty danych w MongoDB:

{
id: 1,
ts: 1488208130000,
logs: [{
id: 1,
type: 4
},{
id: 2,
type: 7
}]
},
{
id: 2,
ts: 1488208150000,
logs: [{
id: 2,
type: 4
}]
}

Chcę zapytać logs z ts między startDate i endDate, desc via ts, również via type jeśli określono. Ale jest zbyt dużo obiektów danych, na przykład jeśli wybierzesz w zeszłym tygodniu (zbliżają się one 1 na sekundę), więc potrzebuję stronicowania. Nie wiem, ile dzienników będzie w obiekcie danych, więc nie mogę najpierw paginować, a następnie rozwijać dzienniki. Numer prawdopodobnie wygrał "t. Mogę prosić o zbieranie danych 2. strona o rozmiarze 100, ale kiedy rozwijam logi, może być ich 47 z pożądanym type.

Odpowiedzi:

1 dla odpowiedzi № 1

Możesz przecinać tablicę w mongo używając $slice operator.

Na przykład.

db.collection.findOne({_id:1}, {B: $slice: [start, end]})

Możesz zrobić z tym kilka niesamowitych rzeczy. Sprawdź w dokumentacji więcej przykładów: https://docs.mongodb.com/manual/reference/operator/projection/slice/