Nota: questo tenterà di memorizzare l'intero set di risultati in memoria (da .toArray
). Attento su grandi set di dati. Non usare in produzione! La risposta di Abishek ha il vantaggio di lavorare su un cursore invece che su un array di memoria.
Se si desidera anche _id, provare questo. Dato una collezione chiamata "richieste":
// Creates a sorted list, then takes the max
db.requests.find().toArray().map(function(request) { return {size:Object.bsonsize(request), _id:request._id}; }).sort(function(a, b) { return a.size-b.size; }).pop();
// { "size" : 3333, "_id" : "someUniqueIdHere" }
fonte
2014-01-28 21:43:54
Non so che cosa il driver che si sta utilizzando, ma si dovrebbe essere in grado di vedere la [dimensioni BSON] (https://github.com/mongodb/mongo-c-driver/blob /master/src/bson.h#L141) in qualche modo. Fatelo e una scansione della tabella per capire qual è il documento più grande. – vinipsmaker
Non è facile, non esiste un operatore '$ documentSize' in una query MongoDB e' $ size' fa qualcosa di molto diverso. Il vero modo on-line nella maggior parte dei driver lato client, include il javascript è quello di utilizzare l'helper lato client. – Sammaye