복붙노트

[MONGODB] 몽고는 = 단일 문서의 크기를 얻을

MONGODB

몽고는 = 단일 문서의 크기를 얻을

나는 몽고의 이상한 행동을 발견하고 나는 그것을 조금을 명확히하고 싶습니다 ... 내 요구는 간단하다 : 나는 컬렉션의 단일 문서의 크기를 좀하고 싶습니다. 나는 두 가지 솔루션을 발견 :

해결법

  1. ==============================

    1.나는 해결책을 발견했다. Object.bsonsize의 이전 호출에 커서의 크기가 아닌 문서 자체를 반환 몽고.

    나는 해결책을 발견했다. Object.bsonsize의 이전 호출에 커서의 크기가 아닌 문서 자체를 반환 몽고.

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

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

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

  2. ==============================

    2.문서가 컬렉션에 걸릴 공간의 유효량 때문에 기록 패딩 메커니즘의 문서의 크기보다 더 될 것입니다.

    문서가 컬렉션에 걸릴 공간의 유효량 때문에 기록 패딩 메커니즘의 문서의 크기보다 더 될 것입니다.

    db.test.stats () 및 Object.bsonsize (...)의 출력 사이에 차이가있는 이유이다.

    Object.bsonsize () 함수에 대한 문서, 스틱 (바이트) 정확한 크기를 얻을 수 있습니다.

  3. ==============================

    3.나는 실제 크기를 얻기 위해이 스크립트를 사용하는 것이 좋습니다.

    나는 실제 크기를 얻기 위해이 스크립트를 사용하는 것이 좋습니다.

    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에 감사합니다.

  4. from https://stackoverflow.com/questions/22008822/mongo-get-size-of-single-document by cc-by-sa and MIT license