MongoDB - Get the size of all the documents in a query

只愿长相守 提交于 2019-12-07 16:29:00

问题


Is there's a way to get the size of all the documents that meets a certain query in the MongoDB shell?

I'm creating a tool that will use mongodump (see here) with the query option to dump specific data on an external media device. However, I would like to see if all the documents will fit in the external media device before starting the dump. That's why I would like to get the size of all the documents that meets the query.

I am aware of the Object.bsonsize method described here, but it seems that it only returns the size of one document.


回答1:


Here's the answer that I've found:

var cursor = db.collection.find(...); //Add your query here.
var size = 0;
cursor.forEach(
    function(doc){
        size += Object.bsonsize(doc)
    }
);
print(size);

Should output the size in bytes of the documents pretty accurately.

I've ran the command twice. The first time, there were 141 215 documents which, once dumped, had a total of about 108 mb. The difference between the output of the command and the size on disk was of 787 bytes.

The second time I ran the command, there were 35 914 179 documents which, once dumped, had a total of about 57.8 gb. This time, I had the exact same size between the command and the real size on disk.



来源:https://stackoverflow.com/questions/33767460/mongodb-get-the-size-of-all-the-documents-in-a-query

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!