카테고리 없음

[자바 스크립트] Mongodb에서 단일 문서의 크기를 얻는 방법은 무엇입니까?

행복을전해요 2021. 1. 20. 03:30

의 이전 호출 Object.bsonsize()에서 Mongodb는 문서가 아닌 커서의 크기를 반환했습니다.

올바른 방법은 다음 명령을 사용하는 것입니다.

Object.bsonsize(db.test.findOne())

를 사용하면 findOne()특정 문서에 대한 쿼리를 정의 할 수 있습니다.

Object.bsonsize(db.test.findOne({type:"auto"}))

특정 문서의 정확한 크기 (바이트)를 반환합니다.

-------------------

실제 크기를 얻으려면이 스크립트를 사용하는 것이 좋습니다.

db.users.find().forEach(function(obj)
{
  var size = Object.bsonsize(obj);
    print('_id: '+obj._id+' || Size: '+size+'B -> '+Math.round(size/(1024))+'KB -> '+Math.round(size/(1024*1024))+'MB (max 16MB)');
    });
    

참고 : ID가 64 비트 정수인 경우 위의 경우 인쇄시 ID 값이 잘립니다! 이 경우 대신 사용할 수 있습니다.

db.users.find().forEach(function(obj)
{
  var size = Object.bsonsize(obj);
    var stats =
      {
          '_id': obj._id, 
              'bytes': size, 
                  'KB': Math.round(size/(1024)), 
                      'MB': Math.round(size/(1024*1024))
                        };
                          print(stats);
                          });
                          

이것은 또한 JSON을 반환하는 이점이 있으므로 RoboMongo와 같은 GUI가이를 표로 만들 수 있습니다!

출처 : https://stackoverflow.com/a/16957505/3933634

편집 : 제안 완료에 대해 @zAlbee 에게 감사드립니다 .

-------------------

레코드 패딩 메커니즘으로 인해 컬렉션에서 문서가 차지하는 유효 공간은 문서 크기보다 큽니다 .

이것이 db.test.stats()의 출력간에 차이가있는 이유 Object.bsonsize(..)입니다.

문서 정확한 크기 (바이트) 를 얻으려면 Object.bsonsize()함수를 고수하십시오 .

-------------------

mongodb 4.4 (출시 예정)에서는 bsonSize연산자를 사용 하여 문서 크기를 가져올 수 있습니다 .

db.test.aggregate([
  {
      "$project": {
            "name": 1,
                  "object_size": { "$bsonSize": "$$ROOT" }
                      }
                        }
                        ])
                        
-------------------

Object.bsonsize (db.test.findOne ({type : "auto"})) 바이트 단위로 제공합니다.



출처
https://stackoverflow.com/questions/22008822