En clústeres que ejecutan MongoDB 7.0.5+ utilice MongoDB Search para recuperar los resultados de la query $search secuencialmente antes o después de un punto de referencia. Use las opciones $search searchAfter o searchBefore para recorrer los resultados en orden y compilar funciones de "Página siguiente" y "Página anterior" en la aplicación.
Uso
Para recuperar resultados paginados, realiza los siguientes pasos:
Crea un índice en los campos que deseas consultar.
Ejecuta una
$searchquery que devuelva un punto de referencia. Para aprender más, se puede consultar Recuperar Punto de Referencia.Utiliza el punto de referencia en tu query
$searchposterior para recuperar el conjunto de documentos anterior o siguiente de los resultados.Para aprender más sobre cómo recuperar resultados para compilar una función de “Página siguiente”, consulta búsqueda después de un punto de referencia específico.
Para aprender más sobre cómo recuperar resultados para compilar una función de "Página anterior", consulta Búsqueda antes de un punto de referencia específico.
To jump to a page in your results, combine
$skipand$limitwith$searchsearchAfterorsearchBeforeoptions. For example, to jump to results from Page 3 to Page 5, with 10 results per page, do the following:Recupera los resultados usando
searchAftercon el punto de referencia para el último resultado en la página 3 (Resultado 30).Use
$skipto skip the 10 results on Page 4 (Results 31-40) and$limitto limit the results to 10 documents.Devuelve los resultados de la página 5 (resultados 41-50).
Here, using
$skipwith thesearchAfteroption optimizes the query to skip only 1 page of results (10 documents). By comparison, if you use$skipwithout the$searchsearchAfteroption, the query skips 4 pages of results (40 documents). To learn more, see Jump from Page 2 to Page 5 Using searchAfter and $skip.
Considerations
Se produce una coincidencia al ordenar un campo para el que varios documentos tienen valores idénticos. MongoDB no garantiza el orden de los resultados de las queries vinculadas, lo que puede generar duplicaciones e incoherencias al usar
searchAfterysearchBefore. Aplicar los siguientes principios para reducir las coincidencias en la puntuación de relevancia:Ordene la query por un campo único para evitar coincidencias en la puntuación de relevancia. Hay un ejemplo en Ordenar por puntuación y un campo único.
Si deseas ordenar principalmente por un campo no único, agrega una cláusula de clasificación secundaria en un campo único que sirva como desempate.
Actualizar o borrar documentos entre queries puede causar incoherencias en el orden de los resultados. Se deben aplicar los siguientes principios para respaldar el comportamiento de búsqueda determinista:
Ordene los resultados de la query por un campo inmutable, como
_id. MongoDB Search refleja las actualizaciones que se realizan en la colección entre las queries iniciales y posteriores. Si se ordena por un campo mutable, comoupdated_time, y se actualiza la colección entre la primera y la segunda query, MongoDB Search podría ordenar los mismos documentos de otra manera.Si se implementaron nodos de búsqueda dedicados y está ordenando los resultados por
searchScore, considere lo siguiente:By default, MongoDB Search scores documents using the
bm25similarity algorithm, which calculates term frequency in relation to the entire corpus of documents on the MongoDB Search node. Because each MongoDB Search node replicates from the changestream independently, this corpus might vary across MongoDB Search nodes. As a result, the same query can return differentbm25scores when routed to different MongoDB Search nodes. Subsequent queries are more likely to be routed to different MongoDB Search nodes if your deployment uses dedicated MongoDB Search nodes, or your read preference is set tosecondaryornearest.Para asegurar puntuaciones coherentes en queries posteriores, configure la propiedad
similarity.typeenstableTflobooleanal indexar un campo como el tipo autocompletar o string de MongoDB Search. Esto obliga a los operadores de texto, frase, queryString y autocompletar a utilizar el algoritmo de similitudstableTflobooleanpara calcular las puntuaciones de relevancia de las query en el campo indexado. Estos algoritmos calculan las puntuaciones de forma coherente en todos los nodos de MongoDB Search. Hay más información en Detalles de la puntuación.
To count search results during pagination, use the count option in your initial
$searchquery or in a separate$searchMetaquery. This method is more efficient than using the$countstage after your$searchstage.La opción count devuelve el número total de documentos que coinciden con tus criterios de búsqueda, así que no es necesario usar la opción
counten queries posteriores si estás generando resultados paginados. Para mantener el conteo separado de la consulta principal$search, utilice una etapa$searchMetacon la opcióncount.Contar los resultados de una búsqueda puede afectar el rendimiento. Usa la opción contar sólo cuando sea necesario, por ejemplo, al obtener resultados de búsqueda para la primera página.
Recupera el punto de referencia
To retrieve query results at a certain point, you must provide the point of reference in your $search query. You can retrieve the reference point by using the $meta keyword searchSequenceToken in the $project stage after your $search stage.
Sintaxis
1 [{ 2 "$search": { 3 "index": "<index-name>", 4 "<operator-name>"|"<collector-name>": { 5 <operator-specification>|<collector-specification> 6 }, 7 "sort": { 8 "score": { 9 "$meta": "searchScore" 10 } 11 }, 12 ... 13 }, 14 { 15 "$project": { 16 "paginationToken" : { "$meta" : "searchSequenceToken" } 17 }, 18 ... 19 }]
Salida
searchSequenceToken genera un token codificado en Base64 para cada documento en los resultados. La longitud del token aumenta con la cantidad de campos especificados en la opción de orden de la query. El token no está vinculado a un snapshot de la base de datos.
Los documentos de los resultados emplean el orden por defecto, a menos que se especifique la opción sort en la consulta. Para aprender sobre cómo ordenar tus resultados, consulte Ordenar resultados de MongoDB Search.
Búsqueda según un punto de referencia específico
Para buscar un punto de referencia, debes especificar el punto de referencia en tu $search query utilizando la opción searchAfter con el token generado por searchSequenceToken. Puedes utilizar el token generado por searchSequenceToken solo cuando vuelvas a ejecutar la $search query para la que searchSequenceToken generó el token. La semántica (campos y valores de búsqueda) de la $search query posterior en la que utilices el token debe ser idéntica a la query para la que searchSequenceToken generó el token.
Puedes usar la opción searchAfter para compilar una función de “Página siguiente” en tu aplicación. Para una demostración de esto, ve el ejemplo en esta página.
searchAfter Sintaxis
1 [{ 2 "$search": { 3 "index": "<index-name>", 4 "<operator-name>"|"<collector-name>": { 5 <operator-specification>|<collector-specification> 6 }, 7 "searchAfter": "<base64-encoded-token>", 8 "sort": { 9 "score": { 10 "$meta": "searchScore" 11 } 12 }, 13 ... 14 }, 15 "$project": { 16 "paginationToken" : { "$meta" : "searchSequenceToken" } 17 }, 18 ... 19 }]
Salida
MongoDB Search returns the documents in the results after the specified token. MongoDB Search returns the generated tokens for the documents in the results because you specified the searchSequenceToken in the $project stage after the $search stage (as shown in line 11). These tokens can be used as a reference point for another query with the same semantics.
Los documentos de los resultados emplean el orden por defecto, a menos que se especifique la opción sort en la consulta. Para aprender sobre cómo ordenar tus resultados, consulte Ordenar resultados de MongoDB Search.
Busca antes de un punto de referencia específico
Para buscar antes de un punto de referencia, tienes que especificar el punto de referencia en tu $search query utilizando la opción searchBefore con el token generado por searchSequenceToken. Puedes usar el token generado por searchSequenceToken solo cuando vuelvas a ejecutar la $search query para la que searchSequenceToken generó el token. La semántica (campos y valores de búsqueda) de la $search query posterior en la que uses el token debe ser idéntica a la query para la que searchSequenceToken generó el token.
Puedes usar la opción searchBefore para compilar una función de "Página anterior" en tu aplicación. Para ello, combine lo siguiente:
Para una demostración de esto, consulta los searchBefore ejemplos de query en esta página.
searchBefore Sintaxis
1 [{ 2 "$search": { 3 "index": "<index-name>", 4 "<operator-name>"|"<collector-name>": { 5 <operator-specification>|<collector-specification> 6 }, 7 "searchBefore": "<base64-encoded-token>", 8 "sort": { 9 "score": { 10 "$meta": "searchScore" 11 } 12 }, 13 ... 14 }, 15 "$project": { 16 "paginationToken" : { "$meta" : "searchSequenceToken" } 17 }, 18 ... 19 }]
searchBefore Salida
MongoDB Search returns documents in the results preceding the specified token in reverse order. MongoDB Search also returns the generated tokens for the documents in the results because you specified the searchSequenceToken in the $project stage after the $search stage (as shown in line 11). These tokens can be used as a reference point for another query with the same semantics.
Ejemplos
The following examples use the db.collection.aggregate() method to run $search queries against the sample_mflix database. The first example query demonstrates how to retrieve a point of reference, which you use in the subsequent example queries to retrieve additional results for pages after or before the reference point.
To run these example queries in mongosh:
Load the sample_mflix.movies collection
Crea el índice
pagination-tutorialcon mapeos dinámicos. Para aprender cómo crear un índice, consulte Administración de índices MongoDB SearchConnect to your cluster using
mongoshand switch to thesample_mflixdatabase
Nota
Por defecto, MongoDB Search ordena los documentos de los resultados por la puntuación de relevancia de los documentos. Si varios documentos en los resultados tienen puntuaciones idénticas, MongoDB Search devuelve los resultados ordenados arbitrariamente. Para devolver los documentos en un orden determinado, las queries especifican un campo único, released, para ordenar los resultados.
La query de muestra utiliza las siguientes etapas del pipeline para recuperar resultados de la primera página y recuperar tokens o un punto de referencia para las query posteriores:
etapa de pipeline | Descripción |
|---|---|
| |
Limita los resultados a | |
Solo incluye los campos
|
db.movies.aggregate([ { "$search": { "index": "pagination-tutorial", "text": { "path": "title", "query": "summer" }, "sort": { "released": 1 } } }, { "$limit": 10 }, { "$project": { "_id": 0, "title": 1, "released": 1, "genres": 1, "paginationToken": { "$meta" : "searchSequenceToken" }, "score": { "$meta": "searchScore" } } } ])
[ { genres: [ 'Drama' ], title: "A Summer at Grandpa's", paginationToken: 'CKUdGgJgAA==', score: 2.262615203857422 }, { genres: [ 'Musical', 'Romance' ], title: 'Summer Stock', released: ISODate('1951-01-22T00:00:00.000Z'), paginationToken: 'CJsFGgkpAHw/0HT///8=', score: 3.000213623046875 }, { genres: [ 'Comedy', 'Romance' ], title: 'Smiles of a Summer Night', released: ISODate('1957-12-23T00:00:00.000Z'), paginationToken: 'CKIHGgkpAKDlpaf///8=', score: 2.0149309635162354 }, { genres: [ 'Drama' ], title: 'Violent Summer', released: ISODate('1959-11-13T00:00:00.000Z'), paginationToken: 'CI8JGgkpAJhJh7X///8=', score: 3.000213623046875 }, { genres: [ 'Drama', 'Romance' ], title: 'A Summer Place', released: ISODate('1959-11-18T00:00:00.000Z'), paginationToken: 'CLoJGgkpAGQJobX///8=', score: 2.579726457595825 }, { genres: [ 'Drama' ], title: 'The End of Summer', released: ISODate('1962-02-01T00:00:00.000Z'), paginationToken: 'CK0KGgkpAAzP18X///8=', score: 2.262615203857422 }, { genres: [ 'Drama', 'Romance' ], title: 'Summer and Smoke', released: ISODate('1962-04-01T00:00:00.000Z'), paginationToken: 'CMQKGgkpAECmB8f///8=', score: 2.579726457595825 }, { genres: [ 'Documentary', 'Sport' ], title: 'The Endless Summer', released: ISODate('1968-08-17T00:00:00.000Z'), paginationToken: 'CO4MGgkpAJjH5vX///8=', score: 2.579726457595825 }, { genres: [ 'Comedy', 'Drama', 'Romance' ], title: "Summer of '42", released: ISODate('1971-04-09T00:00:00.000Z'), paginationToken: 'CPQQGgkpAGRgUAkAAAA=', score: 2.579726457595825 }, { genres: [ 'Drama' ], title: 'That Certain Summer', released: ISODate('1972-11-01T00:00:00.000Z'), paginationToken: 'COwRGgkpAPQV0hQAAAA=', score: 2.579726457595825 } ]
Nota
Contar resultados de búsqueda
Para contar los resultados de búsqueda durante la paginación, ejecuta una $searchMeta query separada con la opción count. Esto devuelve un documento de metadatos que contiene el recuento total de documentos que coinciden con tus criterios de búsqueda.
La siguiente query de muestra obtiene el número total de documentos con el término summer en el campo title:
db.movies.aggregate([ { "$searchMeta": { "index": "pagination-tutorial", "text": { "path": "title", "query": "summer" }, "count": { "type": "lowerBound", "threshold": 5000 } } } ])
[ { count: { lowerBound: Long("65") } } ]
Para recuperar más resultados, es necesario especificar el punto de referencia después del cual se desea recuperar los resultados.
La query de muestra utiliza las siguientes etapas de pipeline para recuperar resultados para la segunda página utilizando el token generado por searchSequenceToken de la query anterior para el mismo término:
etapa de pipeline | Descripción |
|---|---|
| |
Limita los resultados a | |
Solo incluye los campos
|
db.movies.aggregate([ { "$search": { "index": "pagination-tutorial", "text": { "path": "title", "query": "summer" }, "searchAfter": "COwRGgkpAPQV0hQAAAA=", "sort": { "released": 1 } } }, { "$limit": 10 }, { "$project": { "_id": 0, "title": 1, "released": 1, "genres": 1, "paginationToken" : { "$meta" : "searchSequenceToken" }, "score": { "$meta": "searchScore" } } } ])
[ { genres: [ 'Drama' ], title: 'Summer Wishes, Winter Dreams', released: ISODate('1974-09-09T00:00:00.000Z'), paginationToken: 'CMwSGgkpAECHcCIAAAA=', score: 2.262615203857422 }, { genres: [ 'Drama', 'Thriller' ], title: 'Shadows of a Hot Summer', released: ISODate('1978-09-01T00:00:00.000Z'), paginationToken: 'CPEVGgkpAGw/qz8AAAA=', score: 2.0149309635162354 }, { genres: [ 'Drama' ], title: 'Indian Summer', released: ISODate('1978-11-01T00:00:00.000Z'), paginationToken: 'CNYRGgkpAFhj5UAAAAA=', score: 3.000213623046875 }, { genres: [ 'Drama' ], title: 'Indian Summer', released: ISODate('1978-11-01T00:00:00.000Z'), paginationToken: 'CNsRGgkpAFhj5UAAAAA=', score: 3.000213623046875 }, { genres: [ 'Drama', 'Mystery' ], title: 'One Deadly Summer', released: ISODate('1983-05-11T00:00:00.000Z'), paginationToken: 'COwcGgkpAAjtIGIAAAA=', score: 2.579726457595825 }, { genres: [ 'Comedy' ], title: 'Summer Rental', released: ISODate('1985-08-09T00:00:00.000Z'), paginationToken: 'CL8fGgkpABTypHIAAAA=', score: 3.000213623046875 }, { genres: [ 'Drama', 'Romance' ], title: 'Summer', released: ISODate('1986-08-29T00:00:00.000Z'), paginationToken: 'CO0gGgkpAHCiY3oAAAA=', score: 3.5844719409942627 }, { genres: [ 'Drama', 'Thriller' ], title: 'Summer Camp Nightmare', released: ISODate('1987-04-17T00:00:00.000Z'), paginationToken: 'CNkiGgkpAHQ/CX8AAAA=', score: 2.579726457595825 }, { genres: [ 'Action', 'Crime', 'Drama' ], title: 'Cold Summer of 1953', released: ISODate('1988-06-01T00:00:00.000Z'), paginationToken: 'CNsjGgkpACjVTYcAAAA=', score: 2.262615203857422 }, { genres: [ 'Drama', 'War' ], title: 'That Summer of White Roses', released: ISODate('1989-07-11T00:00:00.000Z'), paginationToken: 'CI0mGgkpALSEc48AAAA=', score: 2.0149309635162354 } ]
Para recuperar los resultados anteriores, se debe especificar el punto de referencia antes del cual desea recuperar los resultados.
La query de muestra utiliza las siguientes etapas del pipeline para regresar a los resultados de la primera página utilizando el token generado por searchSequenceToken a partir de la consulta anterior para el mismo término:
etapa de pipeline | Descripción |
|---|---|
| |
Limita los resultados a | |
Solo incluye los campos
|
Nota
By default, MongoDB Search returns the results in reverse order for queries that specify tokens to retrieve results before a point of reference. To return documents in-order, the query uses the toArray() and the JavaScript reverse() methods.
db.movies.aggregate([ { "$search": { "index": "pagination-tutorial", "text": { "path": "title", "query": "summer" }, "searchBefore": "CMwSGgkpAECHcCIAAAA=", "sort": { "released": 1 } } }, { "$limit": 10 }, { "$project": { "_id": 0, "title": 1, "released": 1, "genres": 1, "paginationToken" : { "$meta" : "searchSequenceToken" }, "score": { "$meta": "searchScore" } } } ]).toArray().reverse()
[ { genres: [ 'Drama' ], title: "A Summer at Grandpa's", paginationToken: 'CKUdGgJgAA==', score: 2.262615203857422 }, { genres: [ 'Musical', 'Romance' ], title: 'Summer Stock', released: ISODate('1951-01-22T00:00:00.000Z'), paginationToken: 'CJsFGgkpAHw/0HT///8=', score: 3.000213623046875 }, { genres: [ 'Comedy', 'Romance' ], title: 'Smiles of a Summer Night', released: ISODate('1957-12-23T00:00:00.000Z'), paginationToken: 'CKIHGgkpAKDlpaf///8=', score: 2.0149309635162354 }, { genres: [ 'Drama' ], title: 'Violent Summer', released: ISODate('1959-11-13T00:00:00.000Z'), paginationToken: 'CI8JGgkpAJhJh7X///8=', score: 3.000213623046875 }, { genres: [ 'Drama', 'Romance' ], title: 'A Summer Place', released: ISODate('1959-11-18T00:00:00.000Z'), paginationToken: 'CLoJGgkpAGQJobX///8=', score: 2.579726457595825 }, { genres: [ 'Drama' ], title: 'The End of Summer', released: ISODate('1962-02-01T00:00:00.000Z'), paginationToken: 'CK0KGgkpAAzP18X///8=', score: 2.262615203857422 }, { genres: [ 'Drama', 'Romance' ], title: 'Summer and Smoke', released: ISODate('1962-04-01T00:00:00.000Z'), paginationToken: 'CMQKGgkpAECmB8f///8=', score: 2.579726457595825 }, { genres: [ 'Documentary', 'Sport' ], title: 'The Endless Summer', released: ISODate('1968-08-17T00:00:00.000Z'), paginationToken: 'CO4MGgkpAJjH5vX///8=', score: 2.579726457595825 }, { genres: [ 'Comedy', 'Drama', 'Romance' ], title: "Summer of '42", released: ISODate('1971-04-09T00:00:00.000Z'), paginationToken: 'CPQQGgkpAGRgUAkAAAA=', score: 2.579726457595825 }, { genres: [ 'Drama' ], title: 'That Certain Summer', released: ISODate('1972-11-01T00:00:00.000Z'), paginationToken: 'COwRGgkpAPQV0hQAAAA=', score: 2.579726457595825 } ]
Para omitir los resultados e ir de la página 2 a la 5, utilice el token que genera searchSequenceToken para especificar el punto de referencia después del cual desea recuperar los resultados y, a continuación, omita veinte documentos en los resultados.
The sample query uses the following pipeline stages to jump to results on page 5 by using the token generated by searchSequenceToken from the prior query for the same term and by using the $skip and $limit stages:
etapa de pipeline | Descripción |
|---|---|
| |
Skips 20 documents in the results after the specified point of reference, which is the token associated with the twentieth document in the results for the query you ran to Retrieve Page 2 Using searchAfter. | |
Limita los resultados a | |
Solo incluye los campos
|
db.movies.aggregate([ { "$search": { "index": "pagination-tutorial", "text": { "path": "title", "query": "summer" }, "searchAfter": "COwRGgkpAPQV0hQAAAA=", "sort": { "released": 1 } } }, { "$skip": 20 }, { "$limit": 10 }, { "$project": { "_id": 0, "title": 1, "released": 1, "genres": 1, "paginationToken" : { "$meta" : "searchSequenceToken" }, "score": { "$meta": "searchScore" } } } ])
[ { genres: [ 'Drama' ], title: 'A Storm in Summer', released: ISODate('2000-02-27T00:00:00.000Z'), paginationToken: 'CO5FGgkpAChakN0AAAA=', score: 2.262615203857422 }, { genres: [ 'Comedy', 'Romance' ], title: 'Wet Hot American Summer', released: ISODate('2002-04-11T00:00:00.000Z'), paginationToken: 'CKtIGgkpAFBUIu0AAAA=', score: 2.262615203857422 }, { genres: [ 'Comedy', 'Drama', 'Romance' ], title: 'Summer Things', released: ISODate('2002-10-09T00:00:00.000Z'), paginationToken: 'CIpPGgkpAFxzxvAAAAA=', score: 3.000213623046875 }, { genres: [ 'Adventure', 'Drama', 'Family' ], title: 'Wolf Summer', released: ISODate('2003-02-28T00:00:00.000Z'), paginationToken: 'COZWGgkpAGS6ofMAAAA=', score: 3.000213623046875 }, { genres: [ 'Animation', 'Adventure' ], title: 'Nasu: Summer in Andalusia', released: ISODate('2003-06-26T00:00:00.000Z'), paginationToken: 'CNlaGgkpAMxoAfYAAAA=', score: 2.262615203857422 }, { genres: [ 'Drama' ], title: 'Spring, Summer, Fall, Winter... and Spring', released: ISODate('2004-05-28T00:00:00.000Z'), paginationToken: 'CJ5ZGgkpAOjnyPwAAAA=', score: 1.8161234855651855 }, { genres: [ 'Comedy', 'Drama', 'Romance' ], title: 'Summer Storm', released: ISODate('2004-09-02T00:00:00.000Z'), paginationToken: 'CMVfGgkpAMRwvP4AAAA=', score: 3.000213623046875 }, { genres: [ 'Drama' ], title: 'Summer in the Golden Valley', released: ISODate('2004-10-08T00:00:00.000Z'), paginationToken: 'CNNWGgkpALTVdf8AAAA=', score: 2.0149309635162354 }, { genres: [ 'Drama', 'Romance' ], title: 'My Summer of Love', released: ISODate('2005-07-01T00:00:00.000Z'), paginationToken: 'CL5aGgkpAEyxzwQBAAA=', score: 2.262615203857422 }, { genres: [ 'Drama' ], title: 'Summer in Berlin', released: ISODate('2006-01-05T00:00:00.000Z'), paginationToken: 'CPZmGgkpANzclwgBAAA=', score: 2.579726457595825 } ]
Para agrupar resultados utilizando MongoDB Search facet (operador MongoDB Search), debes indexar cualquier campo string que sea del tipo token. Para ejecutar la siguiente query y agrupar los resultados por el campo genres de la colección movies, tu índice debe parecerse al del siguiente ejemplo:
{ "mappings": { "dynamic": true, "fields": { "genres": { "type": "token" } } } } }
La query de muestra utiliza las siguientes etapas de pipeline:
etapa de pipeline | Descripción |
|---|---|
| |
Adds the | |
Limita los resultados a | |
Devuelve los siguientes campos:
|
db.movies.aggregate([ { "$search": { "index": "pagination-tutorial", "facet": { "operator": { "text": { "path": "title", "query": "summer" } }, "facets": { "genresFacet": { "type": "string", "path": "genres" } } } } }, { "$addFields": { "paginationToken" : { "$meta" : "searchSequenceToken" } } }, { "$limit": 10 }, { "$facet": { "docs": [ { "$project": { "_id": 0, "title": 1, "released": 1, "genres": 1, "paginationToken" : 1 } } ], "meta": [ { "$replaceWith": "$$SEARCH_META" }, { "$limit": 1 } ] } }, { "$set": { "meta": { "$arrayElemAt": ["$meta", 0] } } } ])
[ { docs: [ { genres: [ 'Drama', 'Romance' ], title: 'Summer', released: ISODate('1986-08-29T00:00:00.000Z'), paginationToken: 'CO0gFf1nZUA=' }, { genres: [ 'Musical', 'Romance' ], title: 'Summer Stock', released: ISODate('1951-01-22T00:00:00.000Z'), paginationToken: 'CJsFFYADQEA=' }, { genres: [ 'Drama' ], title: 'Violent Summer', released: ISODate('1959-11-13T00:00:00.000Z'), paginationToken: 'CI8JFYADQEA=' }, { genres: [ 'Drama' ], title: 'Indian Summer', released: ISODate('1978-11-01T00:00:00.000Z'), paginationToken: 'CNYRFYADQEA=' }, { genres: [ 'Drama' ], title: 'Indian Summer', released: ISODate('1978-11-01T00:00:00.000Z'), paginationToken: 'CNsRFYADQEA=' }, { genres: [ 'Comedy' ], title: 'Summer Rental', released: ISODate('1985-08-09T00:00:00.000Z'), paginationToken: 'CL8fFYADQEA=' }, { genres: [ 'Comedy', 'Drama', 'Romance' ], title: 'Summer Things', released: ISODate('2002-10-09T00:00:00.000Z'), paginationToken: 'CIpPFYADQEA=' }, { genres: [ 'Adventure', 'Drama', 'Family' ], title: 'Wolf Summer', released: ISODate('2003-02-28T00:00:00.000Z'), paginationToken: 'COZWFYADQEA=' }, { genres: [ 'Comedy', 'Drama', 'Romance' ], title: 'Summer Storm', released: ISODate('2004-09-02T00:00:00.000Z'), paginationToken: 'CMVfFYADQEA=' }, { genres: [ 'Drama', 'Romance' ], title: 'Summer Palace', released: ISODate('2007-04-18T00:00:00.000Z'), paginationToken: 'CIRrFYADQEA=' } ], meta: { count: { lowerBound: Long('65') }, facet: { genresFacet: { buckets: [ { _id: 'Drama', count: Long('48') }, { _id: 'Romance', count: Long('20') }, { _id: 'Comedy', count: Long('19') }, { _id: 'Family', count: Long('7') }, { _id: 'Adventure', count: Long('5') }, { _id: 'Crime', count: Long('5') }, { _id: 'Mystery', count: Long('5') }, { _id: 'Thriller', count: Long('5') }, { _id: 'Horror', count: Long('4') }, { _id: 'Action', count: Long('3') } ] } } } } ]