J'ai la question quelle méthode de comptage est plus rapide: J'ai quelques paramètres de filtre appelés filterParameters. Maintenant, je faire:Mongo compte sur la collection ou compte sur le curseur - qui plus vite
1. First option:
int count = count with db.dbCollection.count(filterParameters)
and then
dbCursor = db.dbCollection.find(filterParameters).skip(..).limit(..)
2. Second way:
dbCursor = db.dbCollection.find(filterParameters).skip(..).limit(..)
int count = dbCursor.count()
Et en Java, la première façon:
Integer countAllItems = documentService.count(documentType,filterQuery)
DBCursor documents = documentService.list(documentType, [:], filterQuery, sortQuery, command.start, command.count)
où: documentService.count(documentType,filterQuery)
faire:
def collection = db.getCollection(documentType.collectionName)
collection.count(filterQuery)
et documentService.list est de trouver que sur la collecte.
Et puis la deuxième voie:
DBCursor documents = documentService.list(documentType, [:], filterQuery, sortQuery, command.start, command.count)
Integer countAllItems = documents.count()
Lequel est méthode plus rapide?
Ensuite, la seconde devrait être plus rapide? Si vous dites qu'en réalité la requête 'count' est équivalente à' find' + compte du curseur (c'est-à-dire la "seconde façon"), alors la "première option" est équivalente à la deuxième + une autre requête de recherche. Ou est-ce que je me trompe quelque part? En plus de cela, mongo ne capitalise-t-il pas sur ses requêtes exécutées? – dgiugg
Donc, je reçois vraiment différents fealings, parce que quand j'ai utilisé la première option du pilote java, j'obtiens le temps de la salle plus court que la deuxième option. – lukisp
@dgiugg non, vous ne faites qu'une requête dans les deux méthodes – Sammaye