Desidero creare una funzione di impaginazione nella mia raccolta. Come si può trovare un documento con posizioni 'inizio' e 'limite' e ottenere il numero totale del documento in una singola query?Come effettuare l'impaginazione con mangusta
risposta
Non è possibile ottenere entrambi i risultati in una query; il meglio che puoi fare è quello di farli entrambi utilizzando uno Mongoose Query
oggetto:
var query = MyModel.find({});
query.count(function(err, count) {...});
query.skip(5).limit(10).exec('find', function(err, items) {...});
utilizzare un quadro di controllo del flusso, come async
ad eseguirli in parallelo in modo pulito, se necessario.
UPDATE:
Uso saltare e limite non è buono per impaginazione. Here is the discussion over it.
@Wes Freeman, ha dato una buona risposta. Ho letto la posa collegata, dovresti usare la query di intervallo. n = 0; i = n + 10; db.students.find ({"id": {$ gt: n, $ lt: (n + i)}});
RISPOSTA VECCHIO (non usare questo)
uso qualcosa come
n = db.students.find().skip(n).limit(10);
//pass n dynamically, so for page 1 it should be 0 , page 2 it should be 10 etc
maggiore documentazione a http://www.mongodb.org/display/DOCS/Advanced+Queries
Grazie per la risposta, ma è necessario il conteggio totale dei documenti. – Erik
totale = db.students.find(). Count() –
Wes Freeman, ha dato una buona risposta. Ho letto la posa collegata, dovresti usare la query di intervallo. n = 0; i = n + 10; db.students.find ({"id": {$ gt: n, $ lt: (n + i)}}); –
Se si prevede di avere un sacco di pagine, non si dovrebbe usare skip/limit, ma piuttosto calcolare intervalli.
rispostaSede di Scott per una domanda simile: MongoDB - paging
È possibile utilizzare il plugin Mongoose Paginate:
$ npm install mongoose-paginate
Dopo nei vostri percorsi o il controller, basta aggiungere:
Model.paginate({}, { page: 3, limit: 10 }, function(err, result) {
// result.docs
// result.total
// result.limit - 10
// result.page - 3
// result.pages
});
user.find({_id:{$nin:friends_id},_id:{$ne:userId}},function(err,user_details){
if (err)
res.send(err);
response ={
statusCode:200,
status:true,
values:user_details
}
res.json(response);
}).skip(10).limit(1);
La tua risposta può essere quella giusta, ma cerca di aggiungere più contesto al tuo codice per aiutare tutti quelli che potrebbero cercare lo stesso. Si prega di fare riferimento a [Come scrivere una buona risposta?] (Https://stackoverflow.com/help/how-to-answer) – rmjoia
Spiegare che cosa fa il codice della risposta in modo che le persone con scarsa conoscenza nelle tecnologie coinvolte avere la possibilità di capirlo e riutilizzarlo – Wndrr
- 1. Riferimento circolare con mangusta
- 2. Come effettuare videochiamate con ejabberd?
- 3. Come dovrei usare correttamente popola con mangusta?
- 4. Repository come modello con Node e mangusta
- 5. Mangusta: query per inizia con
- 6. Interrogazione con mangusta e date
- 7. Come aggiornare in mangusta?
- 8. valori Convalida interi con mangusta
- 9. Come usare Mangusta in Meteora?
- 10. Effettuare chiamate EJB con timeout
- 11. Interrogazione e somma di tutti con mangusta
- 12. Rapporto One-To-One con mangusta?
- 13. Crea campo autoincrement unico con mangusta
- 14. mangusta distinti e popolare con i documenti
- 15. campo mangusta con il tipo di nome
- 16. node.js catena promesse multiple (con mangusta)
- 17. Leggi file con node.js, mangusta, gridfs-stream
- 18. Come ripristinare un documento incorporato in null con mangusta
- 19. J2ME: come effettuare una chiamata?
- 20. come recuperare la chiave duplicata mangusta + esprimono
- 21. Ereditarietà nella mangusta
- 22. Mangusta - Passa all'elemento successivo
- 23. Come aggiornare il documento incorporato in mangusta?
- 24. Effettuare richiesta HTTP con intestazione in Swift
- 25. Come creare un nuovo db in mangusta?
- 26. Come ottenere il numero del documento Mangusta?
- 27. Come ottenere dati da MongoDb usando mangusta?
- 28. Mangusta Trova non funzionante
- 29. comprensione mangusta [Schema.Types.Mixed]
- 30. .save mangusta() non funziona
Grazie! Funziona bene per me – Erik
Quando eseguo questo l'exec nella seconda query restituisce lo stesso del conteggio ... La funzione di conteggio modifica la query originale ?? –
@ZekeAlexandreNierenberg Hai ragione, Zeke; che deve essere cambiato come un punto. Ho aggiornato l'esempio per aggiungere il parametro ''find'' alla chiamata' exec' per farlo funzionare con Mongoose 3.6.20. – JohnnyHK