SHSubway 프로젝트 노트 3 - mongoDB + JavaScript
roboMongo 로 MongoDB 관 리 를 해 왔 습 니 다. 화면 이 뚜렷 하고 좋 습 니 다. 실행 시간 이 오래 되 어 메모리 가 많이 소모 되 는 명령 을 실행 할 때 까지 roboMongo 는 한 번 또 한 번 무 너 졌 습 니 다. 이것 은 셸 이 믿 을 만 한 것 임 을 발 견 했 습 니 다.
mongoDB 의 셸 은 자바 스 크 립 트 로 이 루어 져 있 으 며, 셸 로 js 스 크 립 트 를 실행 하 는 것 이 편리 하고 안정 적 입 니 다.
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 의 깊 은 복사 와 얕 은 복사?자 바스 크 립 트 의 깊 은 복 제 를 깊이 분석 하 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.