Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Lấy kích thước tất cả tài liệu trong kết quả truy vấn MongoDB

Duyệt qua con trỏ (cursor) và cộng dồn kích thước BSON của từng tài liệu.

Tạo collection

> db.sizeOfAllDocumentsDemo.insertOne({"StudentFirstName": "John", "StudentSubject": ["MongoDB", "Java"]});
{ "acknowledged": true, "insertedId": ObjectId("5cd3c0c1edc6604c74817cd7") }
> db.sizeOfAllDocumentsDemo.insertOne({"StudentFirstName": "Larry", "StudentSubject": ["MySQL", "PHP"], "StudentAge": 21});
{ "acknowledged": true, "insertedId": ObjectId("5cd3c0d9edc6604c74817cd8") }
> db.sizeOfAllDocumentsDemo.insertOne({"StudentFirstName": "Chris", "StudentSubject": ["SQL Server", "C#"], "StudentAge": 23, "StudentCountryName": "US"});
{ "acknowledged": true, "insertedId": ObjectId("5cd3c0fbedc6604c74817cd9") }

Hiển thị tất cả

> db.sizeOfAllDocumentsDemo.find().pretty();

Tính tổng kích thước BSON

> var allDocument = db.sizeOfAllDocumentsDemo.find();
> var counter = 0;
> allDocument.forEach(function(myDocument) {
    counter = counter + Object.bsonsize(myDocument);
});
> print(counter);

Kết quả: 358 (bytes)

Giải thích: Object.bsonsize(document) trả về kích thước BSON serialized của một tài liệu (bytes). Vòng lặp forEach duyệt qua cursor.

Cách khác (aggregation):

db.sizeOfAllDocumentsDemo.aggregate([
    { $project: { size: { $bsonSize: "$$ROOT" } } },
    { $group: { _id: null, totalSize: { $sum: "$size" } } }
]);

(Yêu cầu MongoDB 4.4+ cho $bsonSize)