SHSubway 프로젝트 노트 3 - mongoDB + JavaScript

2364 단어
디 렉 터 리 구조
  • 1. mongoDB js 스 크 립 트 실행
  • 2. mongoDB 데이터 공간 방출 문제 대량 삭제
  • 3. JavaScript 의 깊이 복사 와 얕 은 복사
  • * * 1. mongoDB js 스 크 립 트 실행 * *
    roboMongo 로 MongoDB 관 리 를 해 왔 습 니 다. 화면 이 뚜렷 하고 좋 습 니 다. 실행 시간 이 오래 되 어 메모리 가 많이 소모 되 는 명령 을 실행 할 때 까지 roboMongo 는 한 번 또 한 번 무 너 졌 습 니 다. 이것 은 셸 이 믿 을 만 한 것 임 을 발 견 했 습 니 다.
    mongoDB 의 셸 은 자바 스 크 립 트 로 이 루어 져 있 으 며, 셸 로 js 스 크 립 트 를 실행 하 는 것 이 편리 하고 안정 적 입 니 다.
  • js 스 크 립 트 를 mongoDB 의 bin 디 렉 터 리 에 저장
  • 명령 행 도구 가 bin 디 렉 터 리 에 들 어가 다음 작업 을 수행 합 니 다
  •  mongo 127.0.0.1:27017/dbName –quiet test.js
    

    그리고 조용히 운행 이 끝 날 때 까지 기 다 려 주세요.
    [참고] mongodb 실행 js 스 크 립 트 (1) - 셸 실행
    2. mongoDB 데이터 공간 대량 삭제 문제
    데 이 터 를 삭제 하 는 과정 에서 기 존 데이터베이스 25.5G 에 4 만 1 천 3562 천 171 개의 문서 가 있 는 이상 한 현상 이 발견 됐다.나 는 다음 작업 을 수행 했다.
    db.collectionName.remove( { xxx: "xxx" } )
    

    이 작업 은 165540416 개의 문 서 를 삭제 한 후에 데이터 뱅 크 의 크기 가 뜻밖에도 줄 지 않 고 25.8G 가 되 었 다.이것 은 나 를 매우 곤 혹 스 럽 게 한다.
    【 이 유 】 Stack Overflow 에서 질문 한 것 은 원래 mongoDB 가 공간 을 자동 으로 방출 하지 않 기 때문에 이 공간 들 은 나중에 문 서 를 새로 만 들 때 도 사용 할 수 있다 고 생각 합 니 다.
    [수 동 으로 공간 방출] 이 공간 을 방출 하려 면 repair Database 를 사용 할 수 있 습 니 다.
    mongo 셸 명령 은:
    db.repairDatabase()
    

    또는 명령 행 도 구 는 mongoDB 에 bin 디 렉 터 리 를 설치 하여 실 행 됩 니 다.
    mongod --repair
    

    [참고] 문 서 를 제거 한 후 mongodb 데이터베이스 가 더 많은 공간 을 차지 하 는 이유
    3. 자바 스 크 립 트 의 깊 은 복사 와 얕 은 복사
    먼저 다음 코드 를 보십시오.
    var original = {};
    original.a = 'abc';
    var copy = original;
    copy.a = 'xxx';
    console.log(original.a);//   xxx
    

    새 대상 copy 를 만 들 고 대상 original 을 대상 copy 에 할당 한 다음 copy 의 속성 a 를 수정 하여 대상 original 의 속성 이 변 경 된 것 을 발견 합 니 다.
    【 이 유 】 자 바스 크 립 트 저장 대상 은 모두 저장 주소 이기 때문에 상기 복 제 는 original 과 copy 가 같은 메모리 주 소 를 가리 키 고 상기 대상 의 복사 방식 은 얕 은 복사 입 니 다.
    복사 후 속성 을 수정 하고 원 대상 의 속성 값 을 바 꾸 지 않 으 려 면 딥 복사 방식 으로 새로운 메모리 주 소 를 열 어 원 대상 의 각 속성 을 하나씩 복사 할 수 있 습 니 다.
    심 복 제 는 jQuery 의 $. extend () 함 수 를 사용 하여 이 루어 집 니 다. 다음 과 같 습 니 다.
    var x = {
        a: 1,
        b: { f: { g: 1 } },
        c: [ 1, 2, 3 ]
    };
    
    var y = $.extend({}, x),        //    
        z = $.extend(true, {}, x); //    
    
    y.b.f === x.b.f       // true
    z.b.f === x.b.f       // false
    

    [참고]
    javascript 의 깊 은 복사 와 얕 은 복사?자 바스 크 립 트 의 깊 은 복 제 를 깊이 분석 하 다.

    좋은 웹페이지 즐겨찾기