Ho bisogno di una query casuale, ma non so qual è il modo migliore per farlo nella vista.Ordina per Rand - Come posso fare in CouchDB?
risposta
Ho ottenuto con Math.random() nella mia chiave di visualizzazione. Ma devi capire che sarà deterministico, quindi non puoi usarlo per casualità nella tua app (solo per cose come campionare dati o dividere un database.)
Una strategia di base è:
Conservare un valore casuale nel documento
{ "_id": "7a36b03f3f2899064a1db5e0a6004204", "random": 0.875111079382808 }
è possibile calcolare
random
quando si memorizza il documento o utilizzare una funzione_update
per aggiungerlo per voi .Impostare una vista su tale valore, mescolandoli in modo efficace.
{ "_id": "_design/myapp", "comment": "Function left naked for clarity; it should be a string", "views": { "random_docs": { "map": function(doc) { if(doc.random) { emit(doc.random, doc); } } } } }
Scegliere un numero casuale al momento della richiesta, ad es. 0,4521 e GET
/db/_design/myapp/_view/random_docs?limit=1&startkey=0.4521
.
C'è una possibilità (1/total_rows) di scegliere un numero casuale maggiore di qualsiasi nella vista. Quindi se hai bisogno di essere a prova di proiettile, dovresti rieseguire la query se ottieni 0 righe.
E forse, usare anche un parametro endkey, per evitare di rieseguire la query. –
Buon punto. Grazie! – JasonSmith
- 1. Ordina per rand() in yii2
- 2. ORDINA DA RAND non funziona
- 3. Raggruppa per valore RAND()
- 4. PHP - Is rand (1,1000) = 1000 come probabile come rand (1,1000) = rand (1,1000)?
- 5. Come posso rendere OSX's rand() fallire il test dello spettro?
- 6. Come posso generare numeri casuali senza funzione rand()?
- 7. replace rand() con openssl_random_pseudo_bytes()
- 8. Come si ordina la matrice frastagliata per riga in C#?
- 9. Ordina per day_of_week in MySQL
- 10. ordina per latitudine in geodjango
- 11. Oggetti correlati in CouchDB
- 12. MonadParallel Instance for Rand
- 13. Impaginazione stateless in CouchDB?
- 14. Implementazione di Rand
- 15. SQLite - ORDER BY RAND()
- 16. Attributi personalizzati per allegati CouchDB
- 17. CouchDB in produzione
- 18. Come ottenere l'ultimo documento creato in couchdb?
- 19. Come accedere al log in couchdb
- 20. MySQL join, ORDER BY RAND() quindi ordina ASC (preferibilmente usando Sequelize)
- 21. Come modificare le viste in CouchDB Futon?
- 22. Ordina per CAMPO in MYSQL
- 23. Ordina per collazione in MongoDB
- 24. linq: ordina per casuale
- 25. Ricerca per chiave in Apache CouchDB
- 26. ORDER BY RAND() alternativa
- 27. Come posso sapere se CouchDB è attivo e funzionante?
- 28. mysql RAND() LIMITE
- 29. Bash ordina per regexp
- 30. Ordina per cognome
Forse un miglioramento sarebbe quello di emettere 'doc._rev.match (/^\ d + - (\ w +) $ /) [1]', cioè la parte di checksum della proprietà di revisione? – JasonSmith