MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como posso saber se há mais resultados de uma consulta no MongoDB?


MongoDB tem cursores tailable , que permitem reutilizar um cursor depois que todos os dados forem retornados. Ficaria algo assim:
n = 10
docs = db.documents.find({"foo": "bar"}).limit(n)
more = docs.hasNext()

Observe que há apenas 10 documentos recuperados, mas o cursor pode ser inspecionado para determinar se há mais objetos disponíveis. O único problema é que os cursores tailable só podem ser usados ​​em coleções limitadas.

O acima também pode ser usado com um cursor normal, mas você teria que consultar n + 1 documentos. Esta é basicamente a mesma solução que você está usando agora. Você tem que usar size() no entanto, já que isso leva em consideração os modificadores de salto e limite.
n = 10
docs = db.documents.find({"foo": "bar"}).limit(n + 1)
more = db.size() > n

Não estou familiarizado com o PyMongo, então não tenho certeza, mas existe a possibilidade de que esta solução envie n + 1 documentos completos para sua inscrição, em vez do n necessário , resultando em menor sobrecarga de largura de banda. Se for esse o caso, você pode querer criar uma função do lado do servidor que faça o mesmo, mas apenas retorne um objeto contendo n documentos em uma matriz e um sinalizador que indica se um n + 1 documento está disponível.