Ho bisogno di scegliere un documento da una collezione a caso (in alternativa - un piccolo numero di documenti successivi da una "finestra" posizionata in modo casuale). Ho trovato due soluzioni: 1 e 2. Il primo è inaccettabile poiché prevedo grandi dimensioni di raccolta e desidero ridurre al minimo le dimensioni del documento. Il secondo sembra inefficace (non sono sicuro della complessità dell'operazione skip
). E here si può trovare una menzione di interrogare un documento con un indice specificato, ma non so come farlo (sto usando il driver C++).MongoDB: qual è il modo più efficiente per interrogare un singolo documento casuale?
Esistono altre soluzioni al problema? Qual è il più efficiente?
C'è un [richiesta di funzionalità per ottenere elementi casuali da una collezione] (https://jira.mongodb.org/browse/SERVER-533) nella inseguitore biglietto di MongoDB. Se implementato in modo nativo, sarebbe probabilmente l'opzione più efficiente. (Se si desidera la funzione, andare a votare.) –
Questa domanda è stata posta sotto molte forme qui su Stack Overflow. La domanda più popolare è [Record casuale da MongoDB] (http://stackoverflow.com/questions/2824157/random-record-from-mongodb) - ha buone risposte. Detto questo, penso che il modo migliore di pensare alla domanda sia non pensare di ottenere un documento a caso ma, piuttosto, randomizzare un set di risultati. Vedi [Ordinando un set di risultati a caso in Mongo] (http://stackoverflow.com/questions/8500266/ordering-a-result-set-randomly-in-mongo) per quello. –